具有聚合:
{
$unwind:
{
path: <field path>,
includeArrayIndex: <string>,
preserveNullAndEmptyArrays: <boolean>
}
}
目前,我在mongodb版本中使用这个"$unwind"概念 3.2.It 工作正常。但是在生产中,我有 mongodb 版本 3.0.4。如何在 3.0.4 版本中使用此概念?
任何人都可以帮助我解决这个问题...
有两种
方法可以修复它。
- 升级 :-)
- 更改文档结构以添加
position
值 - 它将充当一种条目 ID 字段 - 请参阅下面的代码片段:
在 forEach 循环中更改文档结构:
db.dev777_copy.find({}).forEach(function (doc) {
var empArraySize = doc.employees.length;
for (var i = 0; i < empArraySize; i++) {
var innerArraySize = doc.employees[i].Salary.length;
for (var j = 0; j < innerArraySize; j++) {
doc.employees[i].Salary[j] = {
position : NumberInt(j),
value : doc.employees[i].Salary[j]
};
}
}
db.dev777_copy.save(doc);
})
然后我们的文档将获得新的形状:
{
"_id" : ObjectId("57862763a63c006944fb508b"),
"employees" : [{
"empId" : 100.0,
"Salary" : [{
"position" : 0,
"value" : 1000.0
}, {
"position" : 1,
"value" : 2000.0
}, {
"position" : 2,
"value" : 3000.0
}
]
}, {
"empId" : 101.0,
"Salary" : [{
"position" : 0,
"value" : 3000.0
}, {
"position" : 1,
"value" : 4000.0
}, {
"position" : 2,
"value" : 500.0
}
]
}
]
}