如果密钥不存在,我想向集合中添加一条记录.我知道[MongoDB][1]为此提供了upsert%的折扣,所以我做了一个 Select

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.

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

注意,在Mongo shell中,这将简单地用新文档替换文档.

Mongodb相关问答推荐

我可以在BSON中使用代理字段吗?

匹配/筛选/投影对象中数组中数组中的嵌套字段

使用特定关键字和邻近度进行查询和过滤

如何使用 MindsDB 和 MQL(对于我的 MongoDB 实例)实施零样本分类?

来自嵌套对象数组的 MongoDB 聚合

判断对象数组中的值是否存在golang

通过insertId MongoDB获取文档

如何修改 mongodb 中嵌套对象数组中的字段名称/键?

Meteor 和 Fibers/bindEnvironment() 是怎么回事?

我怎样才能更快地scrape

如何对连接到 mongo 的方法进行单元测试,而不实际连接到 mongo?

TypeError: object of type 'Cursor' has no len()

try 启用 Mongo DB 身份验证时发生 TypeError

MongoDB备份计划

如何在第一个文档中恢复 MongoDB ChangeStream 而不仅仅是在我开始收听后更改

'this' 在 Mongoose 预保存挂钩中未定义

我可以只获取 Cursor 对象(pymongo)中的第一项吗?

Meteor 发布/订阅独特客户端集合的策略

为什么 Mongo 提示会使查询运行速度提高 10 倍?

在 mongodb 集合中查找最旧/最新的帖子