[英]How can I get the fields from another mongodb collection and add those field values as an array in the current collection?
[英]How to MapReduce collection to get joined array of all values from the field containing array
我在數據庫中具有以下架構:
{
id: 12345;
friends: [123,345,678,908]
},
{
id: 908;
friends: [123,345]
}
有沒有辦法從整個收藏集中獲取所有唯一朋友ID的數組?
要獲得獨特的朋友價值,您無需編寫地圖/簡化工作。
趕緊跑:
> db.collection.distinct("friends")
[ 123, 345, 678, 908 ]
我對MongoDB的MapReduce實現不太熟悉,但我想您可以讓您的映射器將傳遞給它們的值寫為鍵,而只使用空值。
這樣,您可以確保reducer只收到一次給定的密鑰(您的朋友ID),並且您可以簡單地將其寫一次,而無需遍歷值。 由於這些值始終為null,因此沒有必要進行迭代(更不用說,如果您進行迭代,則將多次寫出鍵,您只希望將其寫一次以確保其唯一性即可。)
但是,請記住,您的密鑰將散布在化簡器的輸出文件中,例如,化簡器1可能輸出123
,化簡器2可能輸出345
因此您之后可能必須合並輸出文件的內容才能構建陣列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.