【发布时间】:2018-11-29 19:05:26
【问题描述】:
我有类似的文件
{
"_id" : ObjectId("5bfdb66f0f77e33b90f53fad"),
"email" : "amit@gmail.com",
"appointments" : [
{
"year" : "2018",
"months" : "12",
"day" : "31",
"hour" : "10",
"minute" : "30",
"doctorsName" : "Doc 1",
"hospitalName" : "Place 1",
"sortOrder" : "201812311030"
},
{
"year" : "2018",
"months" : "09",
"day" : "31",
"hour" : "10",
"minute" : "30",
"doctorsName" : "Doc 1",
"hospitalName" : "Place 1",
"sortOrder" : "201809311030"
},
{
"year" : "2018",
"months" : "11",
"day" : "30",
"hour" : "05",
"minute" : "30",
"doctorsName" : "Doc 1",
"hospitalName" : "Place 1",
"sortOrder" : "201811300530"
}
],
"medicalData" : [
{
"year" : "2018",
"months" : "09",
"day" : "31",
"symptomsList" : [“headache”,“nausea”,"cough"],
"weight" : "70",
"bloodPressureSystolic" : "120",
"bloodPressureDiastolic" : "80",
"medications" : [“med 1”,“med 2”],
"sortOrder" : "20180931"
},
{
"year" : "2018",
"months" : "10",
"day" : "31",
"symptomsList" : [“headache”,"cough","Vomiting","Body Pain"],
"weight" : "70",
"bloodPressureSystolic" : "120",
"bloodPressureDiastolic" : "80",
"medications" : [“med 1”,“med 2”,"med 3"],
"sortOrder" : "20181031"
}
]
}
我想根据不同的参数处理两个子文档。在聚合器的帮助下,我尝试了。但是没能成功。
我希望包含所有文件和约会数据的数据应该大于某个排序顺序(order1)和医疗数据等于另一个排序顺序(order2)值。对于该特定排序顺序,只有一个医疗数据可用。现在我正在编写两个查询,一个用于约会,另一个用于医疗数据,并将它们合并为一个完整的 JSON。
我想要的输出类型是:
{
"email" : "amit@gmail.com",
“appointments”:
[{
“year”:2018,
“month”:8,
“day”:1,
“hour”:7,
“minutes”:6,
“doctorName”:”Doc 1”,
“hospitalName”:”Place 1”
},
{
“year”:2018,
“month”:10,
“day”:15,
“hour”:11,
“minutes”:16,
“doctorName”:”Doc 1”,
“hospitalName”:”Place 1”
}],
“symptoms”: [“headache”,“nausea”],
“bloodPressureSystolic”:120,
“bloodPressureDiastolic”:80,
“weight”: 58.5,
“medications”:[“med 1”,“med 2”]
}
请忽略预期结果中的数据不匹配。
【问题讨论】:
标签: mongodb mongodb-query aggregation-framework mongodb-java