mongodb - Mongo - aggregate with multiple conditions -
i have collection hold user's purchases stores , likes , dislikes got purchase friends. collection fields looks that:
{ "_id" : objectid("543e43cea7c481c4820ab014"), "user" : "542ea90fbb1e37b09f660980", "product" : "543e43cea7c481c4820ab013", "store" : "542e6fb1a2a8a7a071490555", "status" : "active", "dislikes" : 1, "likes" : 3, "addedat" : isodate("2014-10-15t09:52:14.661z") }
now, want next summaries:
get diff of (likes - dislikes) user x get diff of (likes - dislikes) user x store y get diff of (likes - dislikes) user x store y , product zfor #1, made:
[ {$group: {_id: '$user', rankdiff: {$sum: {$subtract: ['$likes', '$dislikes']}}}}, {$match : { _id: 'x'}} ],
im' getting proper results:
[ { "_id" : "542ea90fbb1e37b09f660980", "rankdiff" : 2 } ]
but when i'm trying #2 by:
[ {$group: {_id: '$user', rankdiff: {$sum: {$subtract: ['$likes', '$dislikes']}}}}, {$match : { _id: 'x'}, store: 'y'} ],
or #3 by:
[ {$group: {_id: '$user', rankdiff: {$sum: {$subtract: ['$likes', '$dislikes']}}}}, {$match : { _id: 'x'}, store: 'y', product: 'z'} ],
no results return.
is can please help me that? i'm doing wrong?
p.s. did mongoose straight robomongo via mongodb instance
found it, quesry syntax should be:
[ {$match : { user: 'x', store: 'y', product: 'z'}, {$group: {_id: '$user', rankdiff: {$sum: {$subtract: ['$likes', '$dislikes']}}}} ]
and working fine.
thanks!
mongodb mongoose
No comments:
Post a Comment