在序列化/反序列化mongodb文档时避免重复



我有两个集合:

  • 概要文件
  • 舞蹈
struct Profile {
id: String,
firstname: String,
dances: Vec<String>
}
struct DanceModel {
id: String,
name: String,
}

我有一个查找查询,对舞蹈集合进行查找。

let cursor = profile_collection.aggregate(pipeline, None).await.unwrap();
let results = cursor.try_collect().await.unwrap_or_else(|_| vec![]);
let profile = results.first().unwrap();        
let result = bson::from_document::<ProfileResult>(profile.clone());

我创建了一个像这样的新模型:

struct ProfileResult {
id: String,
name: String,
dances: Vec<DanceModel>
}

正如您所看到的,id和name字段是重复的,对于相同的数据,我有两个模型。

是否有办法避免属性和数据模型的重复?

看起来您是在尝试将对象概念应用于过程技术。

要解决这个问题,您可以创建一个IdName结构体,并将该结构体应用于uid字段中的模型。

struct IdName {
id: String,
name: String,
}
struct Profile {
id: String,
firstname: String,
dances: Vec<String>
}
struct DanceModel {
uid: IdName
}
struct ProfileResult {
uid: IdName
dances: Vec<DanceModel>
}

最新更新