2014-01-28 159 views
0

我有一個document調用Mapping,它有一個_id和一個叫Mappings的對象數組。 我有另一個collectionNewMappings。對於NewMappings中的每個_id,我需要在Mappings (of Mapping collection)的數組內搜索並返回Mapping_id基於另一個搜索MongoDB集合

我寫了這樣的東西,但它沒有返回任何東西。

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}}}) 

我缺少的東西? 請幫幫我。我在黑暗中。提前致謝。

+0

在您使用的forEach,你正在創建一個不返回值的函數的代碼。您需要存儲或打印它。 –

+0

你可以添加一段代碼來顯示嗎?謝謝。 – user3245595

回答

0

的一種方式,如果你只是想看到的結果是:

var d=db.NewMappings.find(); 
d.forEach(function(item){ 
    db.matching.find({Mappings: {$elemMatch : {TargetId: item._id}}}).forEach(printjson) 
}) 

您還可以使用aggregation framework

+1

謝謝。我認爲第二次查找只返回一個文檔。我添加了forEach部分,它工作。 – user3245595

0

聽起來你試圖做一個加入,這是不明確在MongoDB中受支持。您需要使用一些聚合函數來平整數據或mapreduce。

下面是一個使用MapReduce的重組信息的一個例子: http://cookbook.mongodb.org/patterns/pivot/

相關問題