начиная с этой схемы документа
{
"_id" : ObjectId("5a5cfde58c8a4a35a89726b4"),
"Names" : [
{ "Code" : "en", "Name" : "ITALY" },
{ "Code" : "it", "Name" : "ITALIA" }
],
"TenantID" : ObjectId("5a5cfde58c8a4a35a89726b2"),
...extra irrelevant fields
}
Мне нужно получить такой объект
{
"ID" : ObjectId("5a5cfde58c8a4a35a89726b4"),
"Name" : "ITALY"
}
Фильтрация по полю Code массива (в примере по 'en').
Я написал агрегированный запрос, это
db.Countries.aggregate([{$project: {_id:0, 'ID': '$_id', 'Names': {$filter: {input: '$Names', as: 'item', cond: {$eq: ['$$item.Code', 'en']}}}}},{$skip: 10},{$limit: 5}]);
которые правильно возвращают только документы со значениями «en» Name, возвращая только соответствующие элементы подмассива.
Теперь я не могу найти способ вернуть только значение поля «Имя» в новое поле «Имя». Какой самый лучший и эффективный способ сделать это?
На самом деле я пытаюсь использовать оболочку Mongo, но позже мне нужно воспроизвести это поведение с помощью драйвера .NET.
Использование MongoDB 3.6
Спасибо