比方说,我有两个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