我想在MongoDB数据库中插入一条记录,但前提是它还不存在。 有些东西告诉我这个代码在性能方面不是最优的:
if db.foo.find(record).count() == 0:
db.foo.insert(record)
如何以最快的方式做到这一点?
答案 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文档并将其颜色更新为红色。如果没有找到文档,它将创建一个包含这两个参数的文档。
答案 1 :(得分:0)
如果您只想确保基于特定键只能存在一条记录,则在该键上创建唯一索引。这将确保独特性。 任何使用相同密钥插入记录的尝试都将失败。你的密钥可以是例如SSN。