【发布时间】:2016-07-02 09:18:18
【问题描述】:
我想在 MongoDB 数据库中插入一条记录,但前提是该记录尚不存在。 有人告诉我,这段代码在性能方面并不是最优的:
if db.foo.find(record).count() == 0:
db.foo.insert(record)
怎样做最快?
【问题讨论】:
标签: python mongodb mongodb-query nosql
我想在 MongoDB 数据库中插入一条记录,但前提是该记录尚不存在。 有人告诉我,这段代码在性能方面并不是最优的:
if db.foo.find(record).count() == 0:
db.foo.insert(record)
怎样做最快?
【问题讨论】:
标签: python mongodb mongodb-query nosql
如果您只想确保基于特定键只能存在一条记录,请在该键上创建唯一索引。这将确保唯一性。 任何插入具有相同键的记录的尝试都将失败。您的密钥可以是例如 SSN。
【讨论】:
更新时,使用 upsert 标志:
db.foo.update_one(filter, updates_dict, upsert=True)
工作示例:
db.things.update_one({'thing':'apple'}, {'$set':{'color':'red'}}, upsert=True)
这将搜索带有'thing': 'apple' 的第一个文档并将其颜色更新为红色。如果没有找到文档,它将使用这两个参数创建一个。
【讨论】: