首页 > 解决方案 > 如何使用 rust mongodb 驱动程序在 mongodb 中执行 bulkWrite?

问题描述

我正在 rust 中实现一个过程,我从 mongodb 集合中读取大量文档,对每个文档的值执行一些计算,然后必须更新 mongodb 中的文档。

在我最初的实现中,在执行计算之后,我会浏览每个文档并调用db.collection.replace_one.

let document = bson::to_document(&item).unwrap();
let filter = doc! { "_id": item.id.as_ref().unwrap() };
let result = my_collection.replace_one(filter, rec_document, None).await?

由于这对于大型记录集来说非常耗时,因此我想使用db.collection.bulkWrite. 在官方rust mongodb驱动的1.1.1版本,bulkWrite好像不支持,所以想用db.run_command. 但是,我不确定如何调用db.collection.bulkWrite(...)using run_command,因为我无法弄清楚如何传递命令名称以及文档集来替换 mongodb 中的值。

我尝试的是创建一个String表示命令文档,其中包含要更新的所有文档记录字符串。为了bson::Document从该字符串创建,我将字符串转换为字节,然后尝试创建要传递的文档,Document::from_reader但这不起作用,也不是一个好的解决方案。

bulkWrite使用 1.1.1 版的 mongodb 板条箱是否有合适或更好的调用方式?

标签: mongodbrust

解决方案


推荐阅读