在两个数组中查找并显示找到的一个

时间:2018-09-17 11:07:28

标签: mongodb

我有这样的文档:

{
    up: [],
    down: []
}

updown包含唯一的用户ID,并且只能在一个数组中。

是否有可能在数组中找到一个ID,然后返回在其中找到ID的地方?

2 个答案:

答案 0 :(得分:1)

您可以运行以下聚合管道:

db.collection.aggregate({
    $project: {
        "foundIn": {
            $cond: [
                // if the filtered "up" array does not equal an empty array []
                { $in: [ userId, "$up" ] },
                // then return "up"
                "up",
                {
                    // otherwise we apply the same logic for "down"
                    $cond: [
                        { $in: [ userId, "$down" ] },
                        "down",
                        // fall back to "nowhere" result if the searched value is not contained in either array
                        "nowhere"
                    ]
                }
            ]
        }
    }
})

答案 1 :(得分:0)

您可以通过以下方式实现:

db.collection.find().forEach(function(doc){
     var num=2; 
     if(doc.up.indexOf(num)>-1) 
         print("found in up"); 
     else if(doc.down.indexOf(num)>-1) 
         print("found in down"); 
     else 
         print("not found") 
})