比方說,我有兩個MongoDB的集合(以實例字段):的MongoDB:鳥巢一個集合在另一個查詢的文檔的結果
People:
_id: 2
name: 'bob'
carIds: [1,2,3]
和
Cars:
_id: 82
model: 'Camry'
有沒有辦法返回一個列表People
與一個新字段Cars
,其中將有一個Cars
數組carId
匹配carIds
人。
我不想永久創建該字段,只是爲了查詢結果。我能以某種方式用地圖來做到這一點嗎?我想:
var peopleWithCars = db.people.find({
}).map(function(doc) {
var carIds = doc.carIds;
var cars = db.cars.find({
_id: { $in: carIds}
})
doc.cars= cars;
return doc;
});
return peopleWithCars ;
,並得到:
Error: Line 18: Illegal return statement
編輯 - 這是最後的工作:
db.people.find({
}).map(function(doc) {
var carIds = doc.carIds;
var cars = db.cars.find({
_id: { $in: carIds}
}).toArray();
doc.cars= cars;
return doc;
});
出於某種原因,它仍然不喜歡瓦爾,但是這迫使項目返回,而不是查詢它們。
更新 - 我試過了。它仍然返回與第一個版本相同的錯誤。使用第二個版本(沒有'var cars'),它返回'查詢成功執行,但是沒有結果顯示' – VSO
也爲汽車領域做一個.toArray()。 – greyfairer
toArray是什麼解決它,但由於某種原因,它不起作用,如果我們運行它的人發現。但它確實迫使汽車查詢執行。 Ty再次尋求幫助。 – VSO