我想確定下列哪個模式對於用mongodb實現是最有效的。我需要跟蹤朋友ID的&共同的朋友計數系統中的每個用戶(user_id在整個集合中是唯一的)。朋友的數量可能高達100,000。MongoDB更新子文檔數組或字典
模式1
{
「_id」 : 「…」,
「user_id」 : 「1」,
friends : {
「2」 : {
「id」 : 「2」,
「mutuals」 : 3
}
「3」 : {
「id」 : 「3」,
「mutuals」: 「1」
}
「4」 : {
「id」 : 「4」,
「mutuals」: 「5」
}
}
}
模式2
{
「_id」 : 「…」,
「user_id」 : 「1」,
friends : [
{
「id」 : 「2」,
「mutuals」 : 3
},
{
「id」 : 「3」,
「mutuals」: 1
},
{
「id」 : 「4」,
「mutuals」: 5
}
]
}
要求:
- 考慮爲user_id和朋友id更新文檔,例如,如果朋友id由1存在增量互助,否則添加新的好友與給定爲user_id和朋友id更新,如果朋友存在這樣的文件1
- 一個互助和互相計數> 1,然後減少互相計數1,否則從文檔中刪除朋友
- 使用id列表,在文檔中查找以確定哪些朋友ID存在(我知道這是可以在客戶端完成的事情,但是對服務器端解決方案感興趣)
- 應該使用哪些索引來加速上述過程?
在我正在進行的工作我已經實現了很多這與模式1,但我現在開始認識到作爲模式2。但是,我無法找到的最有效的方法可能不適合作爲以上問題。
由於Google的最佳結果,我偶然發現了這篇文章。我將在此留給任何其他人在將來搜索:http://docs.mongodb.org/manual/core/update/#update-an-element-without-specifying-its-position –