我有一个2个集合。MongoDB - 2个集合中的聚集
第一个集合: 'firmaListesi'
{
"_id" : ObjectId("58455d2d506c1cab1c82153c"),
"value" : {
"firmaid0" : ObjectId("58455d92506c1cab1c82153e"),
"firmaid1" : ObjectId("5847afe2506c912e6e3a72a7"),
"firmaid2" : ObjectId("5850f2e725108a44a813f93f"),
"firmaid3" : ObjectId("58523f272510fae3c1345547")
}
}
{
"_id" : ObjectId("58455d2d506c1cab1c82154c"),
"value" : {
"firmaid0" : ObjectId("5850f2e725108a44a813f93f"),
"firmaid1" : ObjectId("58523f272510fae3c1345547")
}
}
收藏的第二个: 'calisanSayisi'
{
"_id" : ObjectId("58455d92506c1cab1c82153e"),
"value" : 13.0
}
{
"_id" : ObjectId("5850f2e725108a44a813f93f"),
"value" : 1.0
}
{
"_id" : ObjectId("58523f272510fae3c1345547"),
"value" : 3.0
}
我想在与“calisanSayisi关系。 _id'和'firmaListesi.value.firmaid'。我想以这种方式合并两个收藏。我写的代码有错误。但是对于一个区域来说这是有效你可以在照片中看到我想要的更好。我想为所有的领域制作一张照片。
我的结果
{
"_id" : ObjectId("58455d2d506c1cab1c82153c"),
"value" : {
"firmaid0" : ObjectId("58455d92506c1cab1c82153e"),
"firmaid1" : ObjectId("5847afe2506c912e6e3a72a7"),
"firmaid2" : ObjectId("5850f2e725108a44a813f93f"),
"firmaid3" : {
"_id" : ObjectId("58523f272510fae3c1345547"),
"value" : 3.0
}
}
}
{
"_id" : ObjectId("58455d2d506c1cab1c82154c"),
"value" : {
"firmaid0" : ObjectId("5850f2e725108a44a813f93f"),
"firmaid1" : ObjectId("58523f272510fae3c1345547")
}
}
我的代码:
function birlestir(a,b) {
db.firmaListesi.aggregate([
{$lookup: {
from: "calisanSayisi",
localField: a,
foreignField: "_id",
as: a
}},
{$unwind: {path: b, preserveNullAndEmptyArrays: true}},
{$out: "firmalarId"}
]);
}
for(var i=0; i < (Object.keys(db.firmalistesi.value).length); i++){
var a = 'value.firmaid'+i;
var b = '$'+a;
birlestir(a,b);
}
有代码的主要故障。但我找不到解决方案。你能帮忙吗?
编辑
'firmaListesi' 阵列
{
"_id" : ObjectId("58455d2d506c1cab1c82153c"),
"value" : [
ObjectId("58455d92506c1cab1c82153e"),
ObjectId("5847afe2506c912e6e3a72a7"),
ObjectId("5850f2e725108a44a813f93f"),
ObjectId("58523f272510fae3c1345547")
]
}
{
"_id" : ObjectId("58455d2d506c1cab1c82154c"),
"value" : [
ObjectId("5850f2e725108a44a813f93f"),
ObjectId("58523f272510fae3c1345547")
]
}
我很想知道在firmaListesi集合中的'value'字段是一个对象而不是数组后面的决定。 –
可以说,在搜索解决方案时尝试一切。 :)如果有解决方案作为数组,我可以将其转换回数组。 – forguta