2014-10-17 123 views
0

我有收藏夾,用於將用戶購買的商品以及喜歡和不喜歡的東西從他的朋友那裏購買。收藏領域看起來像這樣:Mongo - 具有多種條件的聚合

{ "_id" : ObjectId("543e43cea7c481c4820ab014"), "user" : "542ea90fbb1e37b09f660980", "product" : "543e43cea7c481c4820ab013", "store" : "542e6fb1a2a8a7a071490555", "status" : "active", "dislikes" : 1, "likes" : 3, "addedAt" : ISODate("2014-10-15T09:52:14.661Z") }

現在,我想下面的摘要:

  1. 獲取的(喜歡 - 不喜歡)的差異對於用戶X
  2. 獲取DIFF用戶X進入商店的(喜歡 - 不喜歡)Y
  3. 將用戶X的差異(喜歡不喜歡)分爲商店Y和商品Z

對於#1,我提出:

​​

林」得到適當的結果:

[ { 「_id」: 「542ea90fbb1e37b09f660980」, 「rankDiff」:2 }]

但是當我試圖得到#2:

[ 
    {$group: {_id: '$user', rankDiff: {$sum: {$subtract: ['$likes', '$dislikes']}}}}, 
    {$match : { _id: 'X'}, store: 'Y'} 
], 

或者通過獲得#3:

[ 
    {$group: {_id: '$user', rankDiff: {$sum: {$subtract: ['$likes', '$dislikes']}}}}, 
    {$match : { _id: 'X'}, store: 'Y', product: 'Z'} 
], 

沒有結果的回報。

有人可以幫助我嗎?我做錯了什麼?

p.s.並全部由貓鼬也可直接與Robomongo通過我的MongoDB實例

回答

0

發現它時,quesry語法應爲:

[ 
    {$match : { user: 'X', store: 'Y', product: 'Z'}, 
    {$group: {_id: '$user', rankDiff: {$sum: {$subtract: ['$likes', '$dislikes']}}}} 
] 

而現在是工作的罰款。

謝謝!