如何使用 pymongo 使用单个文档更新 mongodb 集合?

How to update a mongodb collection with single document using pymongo?

如果我使用单个文档创建集合:

db.time_data.insert({"Last_updated":"Jan 6 22:19:48 IST","Next_scheduled":"Jan 6 23:19:48 IST"})

如何更新 Last_updatedNext_scheduled fields? 我想在不使用任何更新命令选择器的情况下执行此操作。这里的选择器将是自动生成的 id。

不确定您是如何创建文档的:

db.time_data.insert({"Last_updated":"Jan 6 22:19:48 IST"},{"Next_scheduled":"Jan 6 23:19:48 IST"})

因为该操作将导致文档创建如下:

/* 1 */
{
    "_id" : ObjectId("5e1374692a0e7dc716ae47fa"),
    "Last_updated" : "Jan 6 22:19:48 IST"
}

这很正常,因为第二个对象 {"Next_scheduled":"Jan 6 23:19:48 IST"} 被忽略了,您的查询应该如下所示,以便创建包含两个字段的单个文档:

db.time_data.insert({"Last_updated":"Jan 6 22:19:48 IST","Next_scheduled":"Jan 6 23:19:48 IST"})

更新:

由于您的集合只有一个文档,要更新它您实际上不需要任何过滤器,您只需执行以下操作:

db.time_data.update({}, {"Last_updated":"Jan 7 22:19:48 IST","Next_scheduled":"Jan 7 23:19:48 IST"})

(或)

db.time_data.updateOne({}, {$set :{"Last_updated":"Jan 8 22:19:48 IST","Next_scheduled":"Jan 8 23:19:48 IST"}})

(或)

db.time_data.findOneAndUpdate({}, {$set :{"Last_updated":"Jan 9 22:19:48 IST","Next_scheduled":"Jan 9 23:19:48 IST"}})

所以你可以使用上面的任何一个,甚至 .updateMany() 取决于需要,检查他们的反应一些 return 写结果与一些 return 更新文档(如果你设置选项return 新文档)。这些查询是针对 mongoDB shell,请在 pymongo Ref link 中搜索 update 以获取这些转换为与 python 一起工作(最基本的更改将是语法,例如 updateOneupdate_oneupdateManyupdate_many,还要检查传递的选项这些因为它们可能从 mongoDB shell 到 pymongo/mongoDB driver/mongoose).

等驱动程序不等

MongoDB 参考: update, .findOneAndUpdate()

pymongo 参考: pymongo-doc