Я пытаюсь получить элемент из массива в MongoDB в моем проекте Spring Framework.
Я нашел решение для оболочки MongoDB, но я не знаю, как реализовать его с помощью Spring.data.core.aggregation, один из операторов агрегации @addFields не поддерживается Spring.
Может ли кто-нибудь сказать мне, как заменить этот @addField или как реализовать его по-другому? Большое спасибо!!!
Пример данных MongoDB:
{
"_id" : 15,
"items" : [
{
"columns" : [
{
"title" : "hhh",
"value" : 10
},
{
"title" : "hahaha",
"value" : 20
}
]
},
{
"columns" : [
{
"title" : "hiii",
"value" : 50
}
]
}
]
}
Ожидаемый результат:
{
"_id" : 15,
"items" : [
{
"columns" : [
{
"title" : "hahaha",
"value" : 20
}
]
},
{
"columns" : []
}
]
}
Решение для оболочки MongoDB:
let value = "hahaha";
db.coll.aggregate([
{
"$addFields": {
"items": {
"$map": {
"input": "$items",
"as": "item",
"in": {
"columns": {
"$filter": {
"input": "$$item.columns",
"as": "elt",
"cond": { "$eq": [ "$$elt.title", value ] }
}
}
}
}
}
}
}
])
Версия MongoDB: 3.4.1
Весенняя версия: 1.4.3