基于另一个搜索MongoDB集合



我有一个名为Mappingdocument,它有一个_id和一组名为Mappings的对象。我还有一个叫NewMappingscollection。对于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/

最新更新