如果不存在,MongoDB是插入记录的最快方式吗?

时间:2016-03-16 13:08:01

标签: python mongodb mongodb-query nosql

我想在MongoDB数据库中插入一条记录,但前提是它还不存在。 有些东西告诉我这个代码在性能方面不是最优的:

if db.foo.find(record).count() == 0:
    db.foo.insert(record)

如何以最快的方式做到这一点?

2 个答案:

答案 0 :(得分:5)

更新时,请使用upsert标志:

db.foo.update_one(filter, updates_dict, upsert=True)

工作例子:

db.things.update_one({'thing':'apple'}, {'$set':{'color':'red'}}, upsert=True)

这将使用'thing': 'apple'搜索firts文档并将其颜色更新为红色。如果没有找到文档,它将创建一个包含这两个参数的文档。

请参阅文档:http://api.mongodb.org/python/current/index.html

答案 1 :(得分:0)

如果您只想确保基于特定键只能存在一条记录,则在该键上创建唯一索引。这将确保独特性。 任何使用相同密钥插入记录的尝试都将失败。你的密钥可以是例如SSN。