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