为什么collection.find_one({_id:id})即使有正确的字符串id也总是不返回



我正在一个基于MongoDB的API Web服务器上学习Rust,我不知道为什么我不能得到结果:

use mongodb::bson::{doc, oid::ObjectId};
use mongodb::{error::Error, Database};
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize, Clone)]
struct Job {
_id: ObjectId,
user_id: String,
organisation: String,
role: String,
}
async fn find_job_by_id(database: &Database, id: String) -> Result<Option<Job>, Error> {
database
.collection("jobs")
.find_one(Some(doc! { "_id": id }), None)
.await
}

我试着在每一步打印出id,它看起来总是正确的,但.find_one()总是返回Ok(None)。有什么建议吗?

原来ObjectId字段的筛选器必须专门使用ObjectId。你不能像我在那里那样使用字符串来应用过滤器。这种方法就是修复它的原因:

let id = ObjectId::parse_str(id).unwrap();

看来这些神话是真的。。。经过型式检验,锈蚀相当严重。。。

相关内容

  • 没有找到相关文章