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