代码之家  ›  专栏  ›  技术社区  ›  Harsh Patel Sam

匹配一个字段,忽略其他字段

  •  0
  • Harsh Patel Sam  · 技术社区  · 7 年前

    我的数据如下:

      {"_id":"5c0a17013d8ca91bf4ee7885",
        "ep1":{
            "email":"test@gmail.com",
            "password":"123456",
            "phoneNo":"123456789",
            "endpointId":"ep1"
            }
      }
    

    我想匹配所有具有键的对象 ep1 “电子邮件”:test@gmail.com" ep1:{}

    我的req对象类似于{“endpointId”:“ep1”,“email”:

        let query = {[req.body.endpointId]:{email: req.body.email}};
            endpointModelData.endpoint.updateMany(query, {[req.body.endpointId]:{}}, {multi: true}, function(err, doc){
                if (err) return res.send(500, { error: err });
                console.log(doc)
                return res.status(201).send("success.");
            })
    

    但这段代码只有在只有 ep1 对象

    {"_id":"5c0a17013d8ca91bf4ee7885",
        "ep1":{
            "email":"test@gmail.com"
            }
      }
    

    那么,如何匹配电子邮件并忽略其他字段?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Akrion    7 年前

    您需要匹配: {"ep1.email":"test@gmail.com"} 所以改变你的想法 query 致:

    let query = { [`${req.body.endpointId}.email`]: req.body.email };
    

    filter working here

    一天结束时,您的更新应该如下所示:

    updateMany({ "ep1.email" : "test@gmail.com" }, { "ep1": {} }, {multi: true})