如何在mongodb中将$ in运算符作为布尔值投影?

时间:2013-04-26 15:46:28

标签: mongodb aggregation-framework

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中返回一个布尔值?

1 个答案:

答案 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 }

)