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

在mongodb中插入数据的最佳方式是什么,mongodb,Mongodb,在将数据写入mongodb时,我们检查数据是否存在。获取_id并使用save-update-it-else使用insert-add-the-data。如果在保存查询时在查询中提供_id,则读取保存是最好的方法,它将根据数据库中是否存在该_id进行更新/插入。保存是最好的方法还是有其他方法。来自文档 根据文档参数更新现有文档或插入新文档 将一个或多个文档插入到集合中 如果在您的案例中使用db.collection.insert()则会出现重复密钥错误,因为它将尝试插入与现有文档具有相同\u i

在将数据写入mongodb时,我们检查数据是否存在。获取_id并使用save-update-it-else使用insert-add-the-data。如果在保存查询时在查询中提供_id,则读取保存是最好的方法,它将根据数据库中是否存在该_id进行更新/插入。保存是最好的方法还是有其他方法。

来自文档

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

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

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

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

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


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

如果所有数据都可以保存,只需每次运行,但使用
upsert
功能即可。只需要一个查询:

db.collection.update(
   ['_id' => $id],
   $data,
   ['upsert' => true]
);
如果您的
\u id
是由mongo生成的,您总是知道数据库中有一条记录,
update
是要使用的记录,但是您也可以
save()


如果您生成了您的id(因此不知道它是否来自集合),则无需运行额外的查询即可正常工作。

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

db.collection.update(
   ['_id' => $id],
   $data,
   ['upsert' => true]
);
如果您的
\u id
是由mongo生成的,您总是知道数据库中有一条记录,
update
是要使用的记录,但是您也可以
save()


如果您生成了您的id(因此不知道它是否来自集合),无需运行额外的查询,这将始终有效。

因此,如果我有“id”,则保存是最佳方法?@aravchr YES
save
isSo如果我有“id”,则保存是最佳方法?@aravchr YES
save
如果您不确定,则始终使用upsert更新。否则,插入以创建新的是好的。:)如果不确定,请始终使用update with upsert。否则,插入以创建新的是好的。:)保存在保存整个文档时更有效,更新在保存特定字段时更有效,而且只有更新才能执行某些功能,例如
$inc
保存在保存整个文档时更有效,更新在保存特定字段时更有效,此外,只有更新才能执行某些功能,如
$inc