MongoDB修改文档ctime字段失败,现有更新语句不生效如何解决?
问题原因
- 第一条更新语句的查询条件类型不匹配:MongoDB 默认的
_id字段为ObjectId类型,你直接传入字符串类型的id值作为查询条件,类型不一致无法匹配到目标文档,不会触发更新操作。 - 第二条更新语句的更新值类型不匹配:原文档中
ctime字段为ISODate日期类型,你直接传入字符串类型的时间值作为更新内容,类型不匹配导致更新未生效。此外可先执行查询语句db.xabs.find({ "userMappingId" : "6167bf7307fe8867d48970cd" })确认是否能匹配到目标文档,排除集合名写错、字段值输入错误的低级问题。
正确写法
按_id匹配更新
db.xabs.updateOne( { "_id" : ObjectId("6167c0c907fe8867d48970ce") }, { $set: { "ctime" : ISODate("2021-10-13T05:31:53.569Z") } } )
按userMappingId匹配更新
db.xabs.updateOne( { "userMappingId" : "6167bf7307fe8867d48970cd" }, { $set: { "ctime" : ISODate("2021-10-13T05:31:53.569Z") } } )
结果校验
执行更新语句后查看返回结果中的matchedCount和modifiedCount字段:
- 若
matchedCount为1,说明已成功匹配到目标文档 - 若
modifiedCount为1,说明字段更新成功 - 若
matchedCount为0,需重新检查查询条件的字段名、值、类型是否正确,以及操作的集合名称是否正确
内容的提问来源于stack exchange,提问作者aaaaaajib
相关产品推荐
相关产品推荐

