【发布时间】:2019-01-28 12:57:12
【问题描述】:
This post 也有我的问题,但没有人回答。我在 mongodb 中有一个模型,其中包含一些字段,其中一个名为 synced,这是一个布尔字段。
使用下面的代码,我想更新一个(或一些小的更改不止一个)文档的“同步”字段:
db.bulk_write([UpdateOne({'content_id': '6101-1514301051'}, {'$set': {'synced': True}})]).bulk_api_result
但结果显示找到了一个匹配的文档,但没有更新:
{'writeErrors': [],
'writeConcernErrors': [],
'nInserted': 0,
'nUpserted': 0,
'nMatched': 1,
'nModified': 0,
'nRemoved': 0,
'upserted': []}
当我只对另一个字段执行相同操作时,我得到了正确答案并且成功应用了更新:
db.bulk_write([UpdateOne({'content_id': '6101-1514301051'}, {'$set': {'visit': 14201}})]).bulk_api_result
{'writeErrors': [],
'writeConcernErrors': [],
'nInserted': 0,
'nUpserted': 0,
'nMatched': 1,
'nModified': 1,
'nRemoved': 0,
'upserted': []}
我的代码有什么问题,如何将更改应用到 synced 归档?
更多信息:
我也用 mongo-shell 做同样的事情:
> db.my_model_name.updateOne({"content_id": "6101-1514301051"}, {$set: {"synced": true}})
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 0 }
或与
> db.telegram_post_model.update({"content_id": "6101-1514301051"}, {$set: {"synced": true}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })
但仍然无法更新文档。
【问题讨论】:
-
您能否提供该数据库中的文档示例?
-
在第一个示例中,content_id 与您的查询匹配('nMatched': 1),但 'synced' 已经具有值 True ,因此实际上没有数据更改('nModified': 0)。但在第二个示例中,“访问”值已更新,因此“nModified”:1