【发布时间】:2018-01-16 07:35:15
【问题描述】:
我是 mongodb 的新手,目前我正面临这个问题,
db.medical_records.aggregate([
{
"$group": {
"_id": {
"disease_id": "$disease_id" //a string
}, "count": { "$sum": 1 }
}
},
{
"$addFields": {
"disease_id": { "$toObjectId": "$disease_id" }
// i tried to change it into objectID so i could $lookup it
}
},
{
"$lookup": {
"from": "diseases",
"localField": "disease_id",
"foreignField": "_id",
"as": "disease"
}
}
])
这是我收集病历的一个例子
{
"_id" : ObjectId("5989c8f13f3958120800682e"),
"disease_id" : "5989c8f13f3958120800682f",
"patient_id" : "5989c8f13f3958120800681f"
}
疾病收集
{
"_id" : ObjectId("5989c8f13f3958120800682f"),
"name" : "Culpa autem officia.",
"code" : "Est aperiam."
}
我期望的结果是,
{
"_id" : {disease_id: 5989c8f13f3958120800682f},
"count" : 20,
"disease" : {
"_id" : ObjectId("5989c8f13f3958120800682f"),
"name" : "Culpa autem officia.",
"code" : "Est aperiam."
}
}
如上所述,我需要将我的病历收集加入疾病收集。
当我尝试将其查找到疾病集合时,它失败了,因为 foreignField 与 localField 的类型不同。我一直在尝试寻找解决此问题的方法。而上面的查询又返回了一个错误,
Unrecognized expression '$toObjectId'
这个问题可能已经被问过好几次了,但是我真的需要解决这个问题,请帮助
【问题讨论】:
-
您能否更新您的问题以包括:(1) 来自 Medical_records 集合的示例文档; (2) 疾病收集的样本文件; (3) 显示您想要的结果的示例文档。
-
编辑:再谷歌搜索后,我意识到 $toObjectId 是不存在的聚合器,因此该错误是预期的结果。
标签: mongodb