我发现mongodb聚合框架是非常强大的 - 它似乎是一个很好的选择,以展平一个对象。我的模式在一个名为materials的数组中使用了一个子对象数组。材料的数量是可变的,但是特定的字段(类别)在数组中的对象间是唯一的。我想使用聚合框架来扁平化结构并根据类别字段的值动态重命名字段。我无法找到一个简单的方法来完成这个使用$项目以及$ cond。有没有办法?MongoDB聚合框架 - 动态字段重命名
的原因材料的对象的阵列,以允许简单的搜索:
例如{'materials.name':'XYZ'}将找到XYZ的任何文档都拉回来。
E.g.之前和文件
{
"_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",
...
}
您的'after'文档无效JSON – JohnnyHK
谢谢,更新 - 这是从我的编辑器中创建模型的错误 – user2234151
好吧,我明白你现在想要做什么。在agg框架中对动态生成的键没有太多的支持,所以我没有看到你怎么做到这一点。您可能只需在代码中处理结果即可完成此操作。 – JohnnyHK