{
"_id": 1,
"values":[
{
"value1":10,
"value2":12,
"value3":30
},
{
"value1":20,
"value2":12,
"value3":100
},
{
"value1":30,
"value2":14,
"value3":50
}
]
}
{
"_id": 2,
"values":[
{
"value1":10,
"value2":12,
"value3":60
},
{
"value1":20,
"value2":12,
"value3":80
},
{
"value1":30,
"value2":14,
"value3":70
}
]
}
Мне нужно оставить один документ с одним элементом в массиве по следующим критериям:
values.value1 = 20
values.value2 = 12
values.value3 максимальное значение из всех значений values.value3 во всех документах
Например, по вышеуказанным критериям должен получиться такой документ:
{
"_id": 1,
"values":[
{
"value1":20,
"value2":12,
"value3":100
}
]
}
Также, подойдет решение, просто сортирующие документы и элементы по указанным критериям. Чтобы первым документом был тот, в котором значение values.value3 максимально из возможных и первым элементом в массиве был объект с максимальным значением. Например:
{
"_id": 1,
"values":[
{
"value1":20,
"value2":12,
"value3":100
},
{
elements...
}
]
}
{
"_id": 2,
"values":[
{
elements...
}
]
}
Сделать это у меня получается, но я использую $match, $unwind, $group, $redact, $sort по несколько раз. Может быть кто-то предложит более правильную реализацию.