MongoDB聚合使用匹配与查找

时间:2018-12-06 19:42:41

标签: node.js mongodb mongoose mongodb-query aggregation-framework

所以我在这里有这段代码:

Achievement.aggregate([
    {"$match": {}}, 
    {
        $lookup: {
            from: "achievementcompleteds", // collection name in db
            localField: "_id",
            foreignField: "achievement_id",
            as: "completed"
        }
    }]).then((results) => {

它的作用是向用户显示成就,还显示成就旁边是否完成。但是问题是,如果一个用户完成了成就,那么对于每个用户来说,都表明成就已完成。因此,我需要以某种方式通过achievementcompleteds获得user_id

achievemets_id title

achievementcompleteds: _id achievement_id user_id

编辑

好的,这样的代码:

 Achievement.aggregate([
       {
        "$lookup": {
            "from": "achievementcompleteds", // collection name in db
            "localField": "_id",
            "foreignField": "achievement_id",
            "as": "completeds"
        }},
        { "$match": {"completeds.user_id": user._id}}
    ]).then((results) => {

仅向我返回已完成用户的成就。因此,问题在于我现在没有返回所有成就列表。

0 个答案:

没有答案