1
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 }] )

我正在尝试预测用户是否投票。我通过检查用户是否在支持者列表中来做到这一点。它错误地说当前无效的运算符 $in。在mongo中返回布尔值是否有替代方法?

4

1 回答 1

1

$in尝试与 a一起使用时会出现错误,$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 }

)
于 2013-04-26T21:08:14.143 回答