这是在mongodb中插入数据的最佳方式

时间:2015-02-13 07:14:43

标签: mongodb

在向mongodb写入数据时,我们正在检查数据是否存在获取_id并使用save更新,否则使用insert添加数据。如果在查询中提供_id,则读取保存是最好的方法,而保存它将根据数据库中是否存在_id来更新/插入。保存是最好的方法还是有其他方法。

2 个答案:

答案 0 :(得分:2)

来自文档

db.collection.save()

  

根据文档参数更新现有文档或插入新文档。

db.collection.insert()

  

将一个或多个文档插入集合中。

如果您在案例中使用db.collection.insert(),则会出现重复键错误,因为它会尝试插入与现有文档具有相同_id的新文档。但是,您应该使用update方法而不是save

答案 1 :(得分:2)

如果您要保存所有可用数据,请每次只运行update(),但使用upsert功能。只需要一个查询:

db.collection.update(
   ['_id' => $id],
   $data,
   ['upsert' => true]
);

如果您的_id是由mongo生成的,那么您始终知道数据库中有记录,update是要使用的记录,但您可以再次save()

如果您生成了自己的ID(因此不知道它是否来自该集合),则无需运行额外查询即可继续使用。