【发布时间】:2017-01-25 08:59:55
【问题描述】:
我正在尝试从 Spring Framework 项目的 MongoDB 中的数组中获取元素。
我找到了MongoDB shell的解决方案,但我不知道如何通过Spring.data.core.aggregation实现它,Spring不支持聚合运算符@addFields之一。
谁能告诉我如何替换这个@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
【问题讨论】:
标签: java spring spring-data aggregation-framework spring-mongo