Используя агрегатный конвейер, я пытаюсь проецировать внедренный документ на корневой уровень БЕЗ проецирования каждого поля отдельно и без замены корневого уровня.
Например, я хочу проецировать эту коллекцию на корневой уровень:
[
{
_id: "1",
city: "NY"
user: [ {
firstName: "John",
lastname: "Peters",
brothers: [
{ _id: "B1",
brotherFirstName: "Karl" }
]
}, {
firstName: "Raul",
lastname: "Other",
brothers: [
{ _id: "B2",
brotherFirstName: "May" }
]
}, {
firstName: "Paul",
lastname: "Ray",
brothers: [
{ _id: "B3",
brotherFirstName: "Bryan" }
]
}
},
{
_id: "2",
city: "NY"
user: [ {
firstName: "Joe",
lastname: "Anders",
brothers: [
{ _id: "B4",
brotherFirstName: "Carla" }
]
}, {
firstName: "Zoy",
lastname: "Bat",
brothers: [
{ _id: "B5",
brotherFirstName: "Stuart" }
]
}, {
firstName: "Ana",
lastname: "Lily",
brothers: [
{ _id: "B6",
brotherFirstName: "Carter" }
]
}
}
]
Это то, что я ищу: для каждого документа в массиве вложенных документов я хочу проецировать его на корневой уровень, поэтому для каждого "пользователя" я хочу проецировать его на "новый документ" идля каждого «брата» я хочу проецировать его на «новый документ»
[{
_id: "1",
city: "NY"
firstName: "John",
lastname: "Peters",
brotherFirstName: "Karl"
}, {
_id: "1",
city: "NY"
firstName: "Raul",
lastname: "Other",
brotherFirstName: "May"
}, {
_id: "1",
city: "NY"
firstName: "Paul",
lastname: "Ray",
brotherFirstName: "Bryan"
}, {
_id: "2",
city: "NY"
firstName: "Joe",
lastname: "Anders",
brotherFirstName: "Carla"
}, {
_id: "2",
city: "NY"
firstName: "Zoy",
lastname: "Bat",
brotherFirstName: "Stuart"
}, {
_id: "2",
city: "NY"
firstName: "Ana",
lastname: "Lily",
brotherFirstName: "Carter"
}
]
Я пытался агрегировать $ unwind e $ replaceRoot, но я не могу «заменить корень», потому что мне нужно эти поля
db.getCollection('myColl').aggregate([ { $unwind : "$users" }, {$replaceRoot: { newRoot: "$users" }}, {$unwind : "$brothers" } ])
РЕДАКТИРОВАТЬ
Выполнение запроса @Anthony Winzlet У меня был такой вывод:
[
{
"_id": "B1",
"brotherFirstName": "Karl",
"city": "NY",
"firstName": "John",
"lastname": "Peters"
},
{
"_id": "B2",
"brotherFirstName": "May",
"city": "NY",
"firstName": "Raul",
"lastname": "Other"
},
{
"_id": "B3",
"brotherFirstName": "Bryan",
"city": "NY",
"firstName": "Paul",
"lastname": "Ray"
},
{
"_id": "B4",
"brotherFirstName": "Carla",
"city": "NY",
"firstName": "Joe",
"lastname": "Anders"
},
{
"_id": "B5",
"brotherFirstName": "Stuart",
"city": "NY",
"firstName": "Zoy",
"lastname": "Bat"
},
{
"_id": "B6",
"brotherFirstName": "Carter",
"city": "NY",
"firstName": "Ana",
"lastname": "Lily"
}
]
Поле _id было перезаписано полем _id брата.Мне нужен проект _id от root