我有一个名为Mapping
的document
,它有一个_id
和一组名为Mappings的对象。我还有一个叫NewMappings
的collection
。对于NewMappings
中的每个_id
,我需要在Mappings (of Mapping collection)
的数组中搜索并返回Mapping
的_id
。
我写了这样的东西,但它什么也没回。
var d=db.NewMappings.find();
d.forEach(function(item){
db.matching.find({Mappings: {$elemMatch : {TargetId: item._id}}})
})
但是,该查询返回值
var d=db.NewMappings.find();
db.matching.find({Mappings: {$elemMatch : {TargetId: d[0]._id}}})
我是不是错过了什么?请帮帮我,我在黑暗中。提前谢谢。
如果你只想看到结果,有一种方法是:
var d=db.NewMappings.find();
d.forEach(function(item){
db.matching.find({Mappings: {$elemMatch : {TargetId: item._id}}}).forEach(printjson)
})
您还可以使用聚合框架
听起来你正在尝试执行一个Join,而MongoDB并不明确支持它。您需要使用一些聚合函数来压平数据,或者使用mapreduce。
下面是一个使用mapreduce重构信息的示例:http://cookbook.mongodb.org/patterns/pivot/