簡體   English   中英

如何在MongoDb中簡單地執行更新/替換許多文檔的操作

[英]How to simply perform a update/replace many documents operation in MongoDb

這也許是您可以執行的最常見和最基本的數據庫操作之一。 但是,如何在MongoDb中執行此操作是難以捉摸的。

C#驅動程序中有一個UpdateManyAsync方法。 但是我能找到的只是像這樣的例子。

以下操作將更新所有違規大於4的文檔,並為標記設置$進行審核:

try {
   db.restaurant.updateMany(
      { violations: { $gt: 4 } },
      { $set: { "Review" : true } }
   );
} catch (e) {
   print(e);
}

坦白地說,我不知道你們是如何構建應用程序的,但是我們組織永遠不會像在數據庫查詢邏輯中嵌入多少次違規那樣嵌入域邏輯。 像我可以找到的用於此操作的所有示例一樣。

看來最好的選擇是為此使用某種批量api,對於這樣一個簡單的操作來說似乎沒有必要。 使批量api執行一千次替換對我來說似乎無效,但是我在這里可能錯了?

在其他存儲技術和更成熟的API中,執行此操作所需的所有代碼為(示例Entity框架);

db.UpdateRange(stocks);
await db.SaveChangesAsync();

是否在某個地方對Mongo項目的功能請求進行了跟蹤?

批量API可以處理它,請參見以下代碼:

            var updates = new List<WriteModel<CosmosDoc>>();
            foreach (var doc in docs)
            {
                updates.Add(new ReplaceOneModel<CosmosDoc>(doc.Id, doc));
            }
            await MongoDb.DocsCollection.BulkWriteAsync(updates, new BulkWriteOptions() { IsOrdered = false });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM