簡體   English   中英

如何通過MapReduce集合從包含數組的字段中獲取所有值的聯接數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM