如何将字符串转换为Mongo文档?

问题描述 投票:0回答:1

我正在尝试使用字符串创建一个文档来查询 mongo 集合。

类似这样的事情

let query = r#"{ "_id": 3249883475987345844 }"#

let filter = Document::from_String(query);
let cursor = collection.find(filter).await;

我无法使用

doc!
宏,因为查询也是未知的。

let from_config = r#"{ "age": { "$gte": 20 } }"#

在 rust Bson 文档中,有一个方法

Document::from_reader
需要 Bson 字节流。但它并没有明确解释如何创建bson字节流。还有一个
RawDocumentBuf
可以转换为文档,但它也需要 bson 字节流。 Bson 还有一个方法
to_document
但它只返回一个文档(如果它本身已经是一个文档)。我开始觉得这是一个故意设计,不允许数据库受到攻击。

rust mongodb-query
1个回答
0
投票

看起来

bson
不支持使用JSON语法从字符串反序列化,但它确实支持将任何
serde
可序列化的对象序列化到文档中,并且
serde_json
为我们提供了一个可以反序列化的类型(
serde_json::Value
)通用 JSON 字符串并且也是可序列化的:

let query = r#"{ "_id": 3249883475987345844 }"#;
let filter = serde_json::from_str::<serde_json::Value>(query).expect("invalid BSON");
let filter = bson::to_document(&filter).expect("invalid BSON");
© www.soinside.com 2019 - 2024. All rights reserved.