feed = coll.aggregate([
{'$project' :{'Upvoted' :
{'Upvoters' : {'$in' : [ObjectId(userid)]} }}},
{'$match' :{ '$or': [ {"_id": ObjectId(userid) }, {"Friends": ObjectId(userid) } ] } },
{'$unwind' : "$Wall" },
{'$sort' : { "Wall.Hotness" : -1 }},
{'$limit' : numResults }] )
我正在尝试预测用户是否已经投票。我这样做是通过检查用户是否在upvoters列表中。它错误地说当前无效的opererator $。是否有替代in在mongo中返回一个布尔值?
答案 0 :(得分:1)
尝试将$in
与$project
一起使用时收到错误,因为$in
只是$match
管道阶段的有效运算符。
我认为你的聚合实际上并不需要一个明确的“布尔”:你只想匹配这个属性为真的所有文档。
聚合示例:
var currentUser = ObjectId("517ae8124bc9ade96ca6403f");
var numResults = 10;
db.feed.aggregate(
// Find all posts that currentUser has upvoted
{ $match: {
'Upvoters' : currentUser
}},
// Unwind the wall messages
{ $unwind : "$Wall" },
// Sort by hotness (descending)
{ $sort : { "Wall.Hotness" : -1 } },
// Limit results
{ $limit : numResults }
)