假設我們有用戶和後期收集。在收集後,投票將用戶名存儲爲密鑰。Mongodb地圖減少2個集合
db.user.insert({name:'a', age:12});
db.user.insert({name:'b', age:12});
db.user.insert({name:'c', age:22});
db.user.insert({name:'d', age:22});
db.post.insert({Title:'Title1', vote:[a]});
db.post.insert({Title:'Title2', vote:[a,b]});
db.post.insert({Title:'Title3', vote:[a,b,c]});
db.post.insert({Title:'Title4', vote:[a,b,c,d]});
我們希望通過post.Title進行分組,並找出不同用戶年齡的投票數。
> {_id:'Title1', value:{ ages:[{age:12, Count:1},{age:22, Count:0}]} }
> {_id:'Title2', value:{ ages:[{age:12, Count:2},{age:22, Count:0}]} }
> {_id:'Title3', value:{ ages:[{age:12, Count:2},{age:22, Count:1}]} }
> {_id:'Title4', value:{ ages:[{age:12, Count:2},{age:22, Count:2}]} }
我已經通過搜索,並沒有找到一種方法訪問2 MongoDB mapreduce中的集合。 難道有可能實現再減少?
我知道在後期嵌入用戶文檔非常簡單,但它不是一個很好的方式,因爲真正的用戶文檔有很多屬性。如果我們包含用戶文檔的簡化版本,則會限制分析的維度。
{Title:'Title1', vote:[{name:'a', age:12}]}
無法對多個集合執行map-reduce。當你說嵌入文檔方面「這不是一個好的方法」時,還請說明你的理由。儘可能提供您的設計考慮。 –