python - 为什么使用 update_one 更新记录会引发 ValueError?

如果键不存在,我想向集合中添加一条记录。我了解 [MongoDB][1] 为此提供了 upsert,所以我做了一个

db.collection.update({"_id":"key1"},{"_id":"key1"},True) 

这似乎有效。

然而在 Pymongo documentation它说更新已被弃用并用于 update_one()

但是:

db.collection.update_one({"_id":"key1"},{"_id":"key1"},True)

给予:

raise ValueError('update only works with $ operators')
ValueError: update only works with $ operators

我真的不明白为什么 update_one 不同以及为什么我需要使用 $ 运算符。有人可以帮忙吗?

最佳答案

这是因为您没有指定任何 update operator . 例如到 $set id 值使用:

db.collection.update_one({"_id":"key1"}, {"$set": {"id":"key1"}}, upsert=True)

请注意,在 Mongo shell 中,这只会用新文档替换文档。

https://stackoverflow.com/questions/30605638/

相关文章:

mongodb - 在 mongodb 中存储图形

mongodb - Mongo 组并推送 : pushing all fields

mongodb - mongo的命令行身份验证失败

ruby-on-rails - Heroku 的 Rails、Mongoid 和 Unicorn 配

mongodb - 如何从 tar.gz 文件安装 Robomongo 作为 Ubuntu 15.1

mongodb - 为什么我不能使用 Homebrew 更新到最新的 MongoDB?

javascript - Mongoose 填充嵌入式

c# - ORM 与 NoSQL API 是多余的吗?

perl - 如何加快 MongoDB 插入/秒?

mongodb - Mongorestore 不知道如何处理文件 "db/collection.bs