Я опубликовал два вопроса относительно запросов агрегации в пн go.
Вопрос 1 Получает все обязанности по конкретному c человеку
Вопрос 2 Получает все хлопоты для всех людей по конкретному c порядковому номеру (дня)
Теперь, однако Я хотел бы объединить оба этих запроса в один запрос. Возврат только работы по дому для определенного c человека в указанный c день .
Вот то, что у меня есть до сих пор:
ChoreChart.aggregate([
{ "$match": { "affiliation": affiliation, "year": weekYear, "weekNumber": weekNumber } },
{ "$addFields": {
"chart": {
"$map": {
"input": "$chart",
"as": "cc",
"in": {
"_id": "$$cc._id",
"ordinal": "$$cc.ordinal",
"ordinalString": "$$cc.ordinalString",
"chorePerson": {
"$filter": {
"input": "$$cc.chorePerson",
"as": "dd",
"cond":
{
"$and": [
{"$eq": ["$$dd.personID", personID]},
{"$eq": ["$$cc.ordinal", ordinal ]}
] }
}
}
}
}
}
}}
])
Это то, что я получаю за порядковый номер 4, однако, мои выходные данные включают порядковые числа, которые меня не интересуют.
[
{
"_id": "5e2d482cd8593e00162d0568",
"affiliation": "800_800",
"year": 2020,
"month": "January",
"weekNumber": 5,
"weekStart": "01/26/2020",
"weekEnd": "02/01/2020",
"chart": [
{
"_id": "5e330310c66e9e4084cda785",
"ordinal": 0,
"ordinalString": "Sunday",
"chorePerson": []
},
{
"_id": "5e330310c66e9e4084cda783",
"ordinal": 1,
"ordinalString": "Monday",
"chorePerson": []
},
{
"_id": "5e330310c66e9e4084cda780",
"ordinal": 2,
"ordinalString": "Tuesday",
"chorePerson": []
},
{
"_id": "5e330310c66e9e4084cda77e",
"ordinal": 3,
"ordinalString": "Wednesday",
"chorePerson": []
},
{
"_id": "5e330310c66e9e4084cda77c",
"ordinal": 4,
"ordinalString": "Thursday",
"chorePerson": [
{
"_id": "5e330310c66e9e4084cda77d",
"person": "Jo",
"personID": "5e2890268c63351b7c07dc26",
"phone": "8008008001",
"chore": "DC 1",
"choreID": "5e2929cf285338cb8cf375fc"
},
{
"_id": "5e330310c66e9e4084cda77e",
"person": "Jo",
"personID": "5e2890268c63351b7c07dc26",
"phone": "8008008001",
"chore": "DC 2",
"choreID": "5e2929cf285338cb8cf375fd"
}
]
},
{
"_id": "5e330310c66e9e4084cda77a",
"ordinal": 5,
"ordinalString": "Friday",
"chorePerson": []
},
{
"_id": "5e330310c66e9e4084cda778",
"ordinal": 6,
"ordinalString": "Saturday",
"chorePerson": []
}
],
"date": "2020-01-30T16:23:44.713Z",
"__v": 0
}
]
Это - это то, что я действительно хочу:
[
{
"_id": "5e2d482cd8593e00162d0568",
"affiliation": "800_800",
"year": 2020,
"month": "January",
"weekNumber": 5,
"weekStart": "01/26/2020",
"weekEnd": "02/01/2020",
"chart": [
{
"_id": "5e330310c66e9e4084cda77c",
"ordinal": 4,
"ordinalString": "Thursday",
"chorePerson": [
{
"_id": "5e330310c66e9e4084cda77d",
"person": "Jo",
"personID": "5e2890268c63351b7c07dc26",
"phone": "8008008001",
"chore": "DC 1",
"choreID": "5e2929cf285338cb8cf375fc"
},
{
"_id": "5e330310c66e9e4084cda77e",
"person": "Jo",
"personID": "5e2890268c63351b7c07dc26",
"phone": "8008008001",
"chore": "DC 2",
"choreID": "5e2929cf285338cb8cf375fd"
}
]
}
],
"date": "2020-01-30T16:23:44.713Z",
"__v": 0
}
]