Как я могу выполнить bulkWrite в mongodb, используя драйвер rust mongodb?

#mongodb #rust

#mongodb #Ржавчина

Вопрос:

Я реализую процесс в rust, в котором я читаю большое количество документов из коллекции mongodb, выполняю некоторые вычисления для значений каждого документа, а затем должен обновлять документы в mongodb.

В моей первоначальной реализации после выполнения вычислений я просматриваю каждый из документов и вызываю db.collection.replace_one .

 let document = bson::to_document(amp;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 . В версии 1.1.1 официального драйвера rust mongodb, похоже, bulkWrite не поддерживается, поэтому я хочу использовать db.run_command . Однако я не уверен, как вызвать db.collection.bulkWrite(...) using run_command , поскольку я не могу понять, как передать имя команды, а также набор документов для замены значений в mongodb.

Я попытался создать String документ, представляющий командный документ, со всеми записями документа, которые также должны быть обновлены. Чтобы создать bson::Document из этой строки, я преобразую строку в байты, а затем пытаюсь создать документ, который будет передан с помощью Document::from_reader , но это не работает, и это не является хорошим решением.

Есть ли правильный или лучший способ вызова bulkWrite с использованием версии 1.1.1 ящика mongodb?

Комментарии:

1. В драйвере MongoDB Rust отсутствуют некоторые функции…