#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 отсутствуют некоторые функции…