Javascript mongodb在子文档数组的数组中获取不同的项 我所拥有的:
我收集了一组患者,每个患者都有一系列治疗的子文档 每个治疗都有一系列诊断(简单字符串) 我想要什么 我想得到所有的患者,不需要治疗(但需要一系列的诊断!) 我还希望获得不重复(不同)的诊断阵列 数据现在看起来如何 我想如何获取数据 如何使用MongoDB聚合框架进行此操作?您可以运行以获得Javascript mongodb在子文档数组的数组中获取不同的项 我所拥有的:,javascript,mongodb,aggregation-framework,distinct,subdocument,Javascript,Mongodb,Aggregation Framework,Distinct,Subdocument,我收集了一组患者,每个患者都有一系列治疗的子文档 每个治疗都有一系列诊断(简单字符串) 我想要什么 我想得到所有的患者,不需要治疗(但需要一系列的诊断!) 我还希望获得不重复(不同)的诊断阵列 数据现在看起来如何 我想如何获取数据 如何使用MongoDB聚合框架进行此操作?您可以运行以获得lastTreatment以及获得独特的诊断: db.collection.aggregate([ { $project: { _id: 1,
lastTreatment
以及获得独特的诊断:
db.collection.aggregate([
{
$project: {
_id: 1,
firstName: 1,
lastName: 1,
maritalStatus: 1,
createdBy: 1,
createdAt: 1,
__v: 1,
lastTreatment: { $max: "$treatments.treatmentDate" },
diagnoses: {
$reduce: {
input: "$treatments",
initialValue: [],
in: { $setUnion: [ "$$value", "$$this.diagnoses" ] }
}
}
}
}
])
哇,真是太好了,我甚至都没问上次治疗的事
[
{
"_id": "5e517d80da6c3746d416f918",
"firstName": "israel",
"lastName": "k",
"maritalStatus": "Single",
"createdBy": "5e4d918ba81c963ed8d51d25",
"createdAt": "2020-02-22T19:14:08.152Z",
"__v": 1,
"lastTreatment": "2022-03-08T20:29:25.779Z",
"diagnoses": ["a","b","c"]
},
]
db.collection.aggregate([
{
$project: {
_id: 1,
firstName: 1,
lastName: 1,
maritalStatus: 1,
createdBy: 1,
createdAt: 1,
__v: 1,
lastTreatment: { $max: "$treatments.treatmentDate" },
diagnoses: {
$reduce: {
input: "$treatments",
initialValue: [],
in: { $setUnion: [ "$$value", "$$this.diagnoses" ] }
}
}
}
}
])