gpt4 book ai didi

c# - Azure MongoDB API 批量插入

转载 作者:行者123 更新时间:2023-12-03 04:25:37 34 4
gpt4 key购买 nike

我目前使用 Azure Mongo API 来处理 documentDB。然而,这给我们带来了许多麻烦,例如将文档插入数据库并尝试在 InsertMany() 期间忽略重复的键错误。如果批处理中存在重复的文档,它会立即抛出错误并返回,即使我需要它继续。我知道为什么我们会得到这些,因为我正忙于将数据从非分区集合移动到分区集合,并且它们很可能已经被迁移。

显然,在插入过程中,您可以在 insertmanyoptions() 中传递 isOrdered = false ,它应该这样做,但它没有。

最终放弃后,我尝试通过 BulkWriteAsync 尝试此操作,同时使用 IsUpsert = true 遗憾的是我收到了一个有趣的错误:

Value cannot be null. Parameter name : requests

下面是我的代码。

    public async Task BulkInsertDeviceConfigData(List<DeviceEventConfigure> Elements)
{
var models = new List<WriteModel<BsonDocument>>();

// use ReplaceOneModel with property IsUpsert set to true to upsert whole documents
foreach (var element in Elements)
{
var bsonDoc = element.ToBsonDocument();
models.Add(new ReplaceOneModel<BsonDocument>(new BsonDocument("_id", element.Id), bsonDoc) { IsUpsert = true });
};

await BulkWriteAsync(models as IEnumerable<WriteModel<DeviceEventData>>);
}

public virtual async Task BulkWriteAsync(IEnumerable<WriteModel<T>> models)
{
await Collection.BulkWriteAsync(models);
}

enter image description here

这一直伤害着我,因为我们最近一直在增加我们的 RU 来做到这一点,尽管遗憾的是没有成功。

这是 Azure Mongo API 问题还是我的问题?

最佳答案

也许你的 Actor

models as IEnumerable<WriteModel<DeviceEventData>> 

不起作用,导致参数请求为空值。我认为没有必要强制转换为 BsonDocument,因此可以写为:

public async Task BulkInsertDeviceConfigData(List<DeviceEventConfigure> Elements)
{
var models = new List<WriteModel<DeviceEventConfigure>>();

// use ReplaceOneModel with property IsUpsert set to true to upsert whole documents
foreach (var element in Elements)
{
models.Add(new ReplaceOneModel<DeviceEventConfigure>(new BsonDocument("_id", element.Id), element) { IsUpsert = true });
};

await BulkWriteAsync(models as IEnumerable<WriteModel<DeviceEventConfigure>>);
}

public virtual async Task BulkWriteAsync(IEnumerable<WriteModel<T>> models)
{
await Collection.BulkWriteAsync(models);
}

关于c# - Azure MongoDB API 批量插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43835779/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com