搜索

首页  >  问答  >  正文

MongoDB数据不存在时插入,已存在时更新

如题,我现在实现的方法是用语句来查询:

result = db.collection.find_one(xxxx)
if result:
    更新数据
else:
    插入数据

但是,这种方法效率太低了,不知道有没有更好的方法?

天蓬老师天蓬老师2765 天前631

全部回复(3)我来回复

  • 高洛峰

    高洛峰2017-04-21 11:17:38

    MongoDB中引入了一种叫做upsert的特殊更新,如果没有文档符合更新条件,就会以这个条件和更新文档为基础创建一个新的文档;如果找到了匹配文档,则正常更新。

    详见MongoDB的文档。

    回复
    0
  • 怪我咯

    怪我咯2017-04-21 11:17:38

    upsert:
    db.collection.update(xx, xx,true)
    第三个参数设为true即可

    回复
    0
  • 怪我咯

    怪我咯2017-04-21 11:17:38

    不知道有没有对mongodb的find_one测试过, 在亿级(已测试)数据查询时没问题.

    回复
    0
  • 取消回复