我必须使用新的C#2.0驱动程序在MongoDB集合中插入许多文档.使用collection.InsertManyAsync(...)collection.BulkWriteAsync(...)有什么不同吗?(特别是关于性能).

根据我从MongoDB文档中了解到的情况,带有一系列文档的insert应该是一个隐藏的批量操作.对吗?

谢谢你的帮助.

推荐答案

我从驱动程序源代码中找到了答案:InsertManyAsync使用internallyBulkWriteAsync.

所以用InsertManyAsync就等于写:

List<BsonDocument> documents = ...

collection.BulkWriteAsync(documents.Select(d => new InsertOneModel<BsonDocument>(d)));

显然,如果所有操作都是insert,那么应该使用InsertManyAsync.

Mongodb相关问答推荐

没有文档的MongoDB集合中的不一致,但当我执行count()时,它告诉我有15个文档

MongoDB与合并对象聚合

MongoDB聚合$group阶段$top与$first在大型数据集上的效率

如何在 MongoDB 中的集合下查找同一文档

Mongo 聚合将 $sort 与 $geoNear 结合使用

在我的查询中使用 populate() 时的 MongoDB createIndex()

MongoDB - 分组并找到前 N 个

Nestjs中不同语言数据的mongodb聚合代码

MongoDB中的readPreference和readConcern有什么区别?

更新文档中的数组时,如何在 MongoDB 和 C# 中使用 $push 更新修饰符

MongoDB 中 cursor.count() 和 cursor.size() 之间的区别

使用 nodejs/mongoose 部分更新子文档

Mongoose 中不同集合的相同模式

是否有适用于 Linux 的 MongoDB GUI 桌面应用程序?

MongoDB count() 未定义

直接从 URL 查询字符串提供的 mongo 查询有多危险?

$orderby 和 Sort 之间的 MongoDB 区别

如何在 MongoDB 的 $match 中使用聚合运算符(例如 $year 或 $dayOfMonth)?

MongoDB 的 MMAPV1、WiredTiger 或 In-Memory StorageEngine 如何 Select ?

mongoose — 判断 ObjectId 是否存在于数组中