Я пытаюсь извлечь элемент из массива в MongoDB в моем проекте Spring Framework.Фильтровать массив в поле поддокументного массива в 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 Shell:
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
Спасибо за ваше предложение, но изменения версии слишком сложна для меня. – Spider
Весенняя ботинок 1.4.3 имеет версию весеннего монго db 1.9.6. Поэтому первый вариант должен работать на вас. Ты пробовал ? – Veeram