Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Monodb在内部文档中查找元素_Node.js_Mongodb - Fatal编程技术网

Node.js Monodb在内部文档中查找元素

Node.js Monodb在内部文档中查找元素,node.js,mongodb,Node.js,Mongodb,我在mongodb集合中有以下数据 { "_id" : ObjectId("5e09ad518f49801c3275cc54"), "user_id" : "100", "user_type" : "Demo", "created_date" : ISODate("2019-12-30T07:54:57.885Z"), "updated_date" : ISODate("2019-12-30T07:54:57.885Z"), "communicat

我在mongodb集合中有以下数据

{
    "_id" : ObjectId("5e09ad518f49801c3275cc54"),
    "user_id" : "100",
    "user_type" : "Demo",
    "created_date" : ISODate("2019-12-30T07:54:57.885Z"),
    "updated_date" : ISODate("2019-12-30T07:54:57.885Z"),
    "communications" : [ 
        {
            "_id" : ObjectId("5e09ad558f49801c3275cc55"),
            "import_date" : ISODate("2019-12-30T07:54:57.885Z"),
            "service_provider" : "gmail",
            "communication":[],
        }, 
        {
            "_id" : ObjectId("5e09ad7f8f49801c3275cc57"),
            "import_date" : ISODate("2019-12-30T07:55:36.906Z"),
            "service_provider" : "outlook",
            "communication":[],
        }
    ],
    "__v" : 1
}
我只想找到特定的通信节点,如gmail或outlook。我尝试了以下查询,但我从数组中获取了这两个元素

db.getCollection('emails').findOne({user_id:'100','communications.service_provider':'gmail'})
帮我做这个。
提前感谢

您必须使用elemMatch,因为您正在阵列中搜索。试试这个

db.getCollection('emails').findOne({
                                        user_id:'100',
                                        communications: { 
                                            $elemMatch: { service_provider: { $eq:'gmail' } }
                                        }
                                    })

仍然从数组中获取两个元素