在mongodb对象中添加条件和对象数组

时间:2019-02-25 05:42:07

标签: mongodb mongoose

我有一个这样的文件

{
"_id": {
    "$oid": "5c7369826023661073802f63"
},
"participants": [
    {
        "id": "ABC",
        "nickname": "USER1",
    },
    {

        "id": "DEF",
        "nickname": "USER2",
    }
]},... etc, et

我想找到包含您提供的两个ID的记录

我尝试这个。

moodel.aggregate([
    {
        $match:{'participants.id':idOne}
    },{
        $project:{
            list:{
                $filter:{
                    input:'$list',
                    as:'item',
                    cond: {$eq: ['$$item.participants.id', idTwo]}
                }
            },
        }
    }
])

但结果是:

[ { _id: 5c7369826023661073802f63, list: null }]

我希望它只返回与两个ID匹配的记录。

1 个答案:

答案 0 :(得分:0)

  

使用$ elematch和$ in

Static Website with Hugo, Cloudflare and Automated Builds using Google Cloud

https://docs.mongodb.com/manual/reference/operator/query/elemMatch/

db.moodel.find({"participants": {$elemMatch: {id: {$in: [idOne, idTwo]}}}})