joh*_*y B 31 python mongodb pymongo mongodb-query
如果密钥尚不存在,我想在集合中添加记录.我理解[MongoDB] [1]提供了upsert这个,所以我做了一个
db.collection.update({"_id":"key1"},{"_id":"key1"},True)
Run Code Online (Sandbox Code Playgroud)
这似乎有效.
但是在Pymongo文档中,它表示不推荐使用更新并使用update_one().
但:
db.collection.update_one({"_id":"key1"},{"_id":"key1"},True)
Run Code Online (Sandbox Code Playgroud)
得到:
raise ValueError('update only works with $ operators')
ValueError: update only works with $ operators
Run Code Online (Sandbox Code Playgroud)
我真的不明白为什么update_one不同以及为什么我需要使用$运算符.有人可以帮忙吗?
sty*_*ane 39
这是因为您没有指定任何更新运算符.例如,为了$set该id值使用:
db.collection.update_one({"_id":"key1"}, {"$set": {"id":"key1"}}, upsert=True)
Run Code Online (Sandbox Code Playgroud)
请注意,在Mongo shell中,这只是用新文档替换文档.
Geo*_*Lei 15
用replace_one()而不是update_one().的第三个参数replace_one()是upsert,太.
db.collection.replace_one({"_id": "key1"}, {"_id": "key1"}, True)
Run Code Online (Sandbox Code Playgroud)
我个人认为这种实现update_one()与MongoDB客户端的行为不一致.该upsert选件update_one()实际上是毫无意义的.但pyMongo的开发人员可能只想用它来区分update_one()和replace_one().
| 归档时间: |
|
| 查看次数: |
15128 次 |
| 最近记录: |