Louis919 2023-04-20 09:56 采纳率: 33.3%
浏览 11

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)  


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

  • 写回答

1条回答 默认 最新

  • 亮仔同学__ 2023-04-20 14:22
    关注

    在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 作为查询条件时效率更高。

    评论

报告相同问题?

问题事件

  • 创建了问题 4月20日

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀