mongoDB 更新操作 为什么根据多个条件更新不成功?而用id 来做查询条件可以!

mongoDB 更新操作 为什么根据多个条件更新不成功?而用id 来做查询条件可以!

 if(allDevices2[i]["状态码"]=="2" || allDevices2[i]["状态码"]=='3'||allDevices2[i]["状态码"]=="生产中" ||allDevices2[i]["状态码"]=="已完工"||allDevices2[i]["状态码"]=="指定完工"){
            var yjwgrq=allDevices2[i]["预计完工日期"];
            var yjwgrqxg=yjwgrq.replace(/-/g,'/');
            var yjwgrqtime=new Date(yjwgrqxg).getTime();
            if(nowdatetime>yjwgrqtime){
                ztyq="是";
            }
            else if(nowdatetime<=yjwgrqtime){
                ztyq="否";
            }
        }
        else
        {
            ztyq="否";
        }
        db.注塑工单日统计.update({ERP单号: dmDevices2[i]['ERP单号'], 产品品号: dmDevices2[i]['产品品号'], 产品品名: dmDevices2[i]['产品品名'], 产品规格: dmDevices2[i]['产品规格']},{$set:{"状态逾期":ztyq}},true,false) 
////////  上面语句无法更新
//换成下方的可以
  db.注塑工单日统计.update({_id:allDevices2[i]['_id']},{$set:{"状态逾期":ztyq}},true,false)  


这是 什么原因呢?别人说条件不匹配,但这四个条件应该是能找到对应的数据的呀

在MongoDB中,更新操作可以使用 update() 方法来执行。当我们需要根据多个条件更新文档时,我们可以使用 $and 以及 $or 等操作符来进行多条件组合查询,并将查询结果作为更新条件。以下是一个示例:

db.collection.update(
   {
      $and: [
         { "field1": value1 },
         { "field2": value2 }
      ]
   },
   {
      $set: {
         "field3": value3
      }
   }
)

上面的代码将会在 collection 集合中找到 field1 等于 value1 并且 field2 等于 value2 的文档,然后将 field3 的值更新为 value3

如果根据多个条件更新不成功,可能是由于查询条件设置不当导致的。我们可以通过运行 find() 方法来检查是否能够找到要更新的文档。如果查询条件正确但是更新依然失败,那么我们也可以通过使用 explain() 方法来检查 MongoDB 是否有误。

另外,使用 _id 来做查询条件可以成功是因为 _id 是每个文档的唯一标识符,而且默认情况下 _id 字段是索引字段,所以使用 _id 作为查询条件时效率更高。