Я хотел бы объединить значения полей массива внутри массива объектов в одно строковое поле. Вот существующий формат документа:
{
"no" : "123456789",
"date" : ISODate("2020-04-01T05:19:02.263+0000"),
"notes" : [
{
"_id" : ObjectId("5b55aabe0550de0021097bf0"),
"term" : "BLA BLA"
},
{
"_id" : ObjectId("5b55aabe0550de0021097bf1"),
"term" : "BLA BLA BLA"
},
{
"_id" : ObjectId("5b55aabf0550de0021097ed2"),
"term" : "BLA"
}
],
"client" : "John Doe"
}
Требуемый формат документа:
{
"no" : "123456789",
"date" : ISODate("2020-04-01T05:19:02.263+0000"),
"notes" : "BLA BLA \n BLA BLA BLA \n BLA",
"client" : "John Doe"
}
Попытка с $ project:
{ "$project": {
"notes": {
"$map": {
"input": "$notes",
"as": "u",
"in": {
"name": { "$concat" : [ "$$u.term", "\\n" ] }
}
}
}
}
}
, но это возвращает это:
{
"no" : "123456789",
"date" : ISODate("2020-04-01T05:19:02.263+0000"),
"client" : "John Doe"
"notes" : [
{
"name" : "BLA \n"
},
{
"name" : "BLA BLA \n"
},
{
"name" : "BLA BLA BLA \n"
}
]
}
Как получить его в нужном формате? Любая идея была бы оценена!
Редактировать:
Если мы попытаемся добавить значения полей массива вместе, как мы можем сделать это таким образом, не группируя?
Существующий формат:
{
"sale" : {
"bills" : [
{
"billNo" : "1234567890",
"billAmt" : NumberInt(1070),
"tax" : NumberInt(70)
}
]
},
"no" : "123456789",
"date" : ISODate("2020-04-01T05:19:02.263+0000")
}
Требуется:
{
"no" : "123456789",
"date" : ISODate("2020-04-01T05:19:02.263+0000"),
"total" : NumberInt(1140)
}