我有一個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