我发现 MongoDB 聚合框架非常强大——它似乎是展平对象的好选择。我的架构在一个名为materials
. 数量materials
是可变的,但特定字段category
在数组中的对象中是唯一的。我想使用聚合框架来展平结构并根据字段的值动态重命名category
字段。我找不到一种简单的方法来使用 a$project
和$cond
. 有办法吗?
物质对象数组的原因是允许简单的搜索:
例如{ 'materials.name' : 'XYZ' }
,拉回找到“XYZ”的任何文档。
例如之前和之后的文件
{
"_id" : ObjectId("123456"),
"materials" : [
{
"name" : "XYZ",
"type" : "Red",
...
"category" : "A"
},
{
"name" : "ZYX",
"type" : "Blue",
...
"category" : "B"
}]
}
至
{
"material_A_name" : "XYZ",
"material_A_type" : "Red",
...
"material_B_name" : "ZYX",
"material_B_type" : "Blue",
...
}