查找数组中与特定值匹配的所有元素-mongodb

时间:2018-09-04 10:21:40

标签: node.js mongodb mongoose

MongoDB V:3.6

我有一个包含6个元素的数组,每个元素都有2个值:fileNamecount我想获取数组中所有计数为0的元素

我尝试使用此代码,但它仅返回一个元素,而不是所有匹配的元素。

await User.findOne({email:email},
                   { ackFiles: { $elemMatch: { count: 0 } } });

仅返回以下内容:

{ _id: 5b55d0fd9dc644051c801058,
  ackFiles: [ { fileName: 'terms_of_use_vad', count: 0 } ] }

这是我的数据库的样子 enter image description here

1 个答案:

答案 0 :(得分:1)

db.getCollection('').aggregate([{"$match": {"email": ""}},
{"$group" : {"_id" : {"email": "$email"}}},        
{
            "$project": {
                "files": {
                    "$filter": {
                        "input": "$ackfiles",
                        "as": "file",
                        "cond": {
                            "$in": ["$$file.count", [0]]
                        }
                    }
                }
            }
        }

    ])