2013-07-13 19 views
4
db.users.find(); 

會回到我的用戶的數組:MongoDB的 - 找回對象,而不是陣列從發現

[{ 
_id: 123 
name: bob 
},{ 
_id: 456 
name: tom 
}] 

我需要用戶映射到由ID另外一個集合,所以我想獲得一個從mongo返回對象,其中鍵是_id,值是用戶文檔。

users = { 
123: {_id: 123, name: bob}, 
456: {_id, 456, name:tom} 
} 

然後,我可以從該物體直接訪問用戶,而無需遍歷陣列找到特定用戶。

id = 123; 
user = users[id]; 
+0

沒有辦法找回數據從mongod的這種方式,除了通過使用mapreduce並不是非常快速/高效......當然,它可以將結果寫入新的集合,這樣可以爲您節省一個步驟。 –

+1

我建議你通過循環返回的結果來構建一個快速的客戶端索引。它應該超快。 – WiredPrairie

回答

2

你不能得到這樣一個從MongoDB的對象,但它很容易建立它自己:

db.users.find(function (err, docs) { 
    var users = {}; 
    docs.forEach(function (doc) { 
    users[doc._id] = doc; 
    }); 
    do_whatever_you_want_next(users); 
}); 
+0

是的,這不是太糟糕。正在搞亂聚合和$項目,看看我能否得到它。 – lostintranslation

+0

在最新版本的mongodb中,它是不可能的嗎? –

+0

@ mandeep_m91,我不認爲它會成爲MongoDB API的一部分。 –

相關問題