如何使用 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_updated
和 Next_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 一起工作(最基本的更改将是语法,例如 updateOne
到 update_one
,updateMany
到 update_many
,还要检查传递的选项这些因为它们可能从 mongoDB shell 到 pymongo
/mongoDB driver
/mongoose
).
等驱动程序不等
MongoDB 参考: update, .findOneAndUpdate()
pymongo 参考: pymongo-doc
如果我使用单个文档创建集合:
db.time_data.insert({"Last_updated":"Jan 6 22:19:48 IST","Next_scheduled":"Jan 6 23:19:48 IST"})
如何更新 Last_updated
和 Next_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 一起工作(最基本的更改将是语法,例如 updateOne
到 update_one
,updateMany
到 update_many
,还要检查传递的选项这些因为它们可能从 mongoDB shell 到 pymongo
/mongoDB driver
/mongoose
).
MongoDB 参考: update, .findOneAndUpdate()
pymongo 参考: pymongo-doc