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

问题描述 投票:0回答:1

如果我使用以下方法创建单个文档的集合:

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。

python mongodb pymongo pymongo-3.x
1个回答
0
投票

不确定您如何使用::>创建文档

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()中的任何一个,请检查其响应是否返回了一些写结果,还是返回了更新过的文档(如果您设置了返回新文档的选项)。这些查询适用于mongoDB shell,请在pymongo Ref

链接中搜索update,以将其转换为可与python一起使用。

MongoDB参考:

update.findOneAndUpdate()

pymongo参考:

pymongo-doc
© www.soinside.com 2019 - 2024. All rights reserved.