我正在使用聚合查询从MongoDB中的嵌套文档结构中获取B对象的列表。该查询在mongo shell中运行良好,并返回了C._id
,但是当我对spring数据进行同样的操作时,它返回了默认的A._id
。
这是具有A集合的文档结构,分别与B数组和C数组嵌套
{
_id: 1,
B : [{
_id: 1.1,
C : [{
_id: 1.1.10
type: "input"
}]
}]
}
此查询返回“ C._id:1.1.10”
db.sw_eng.aggregate([{"$unwind":"$B"},{"$unwind":"$B.C"},{"$match":{"B.C.type":"input"}},{$project:{_id:0, Cid:"$B.C._id"}}]);
但是当我使用spring数据做同样的事情时
Aggregation getOutputPort = Aggregation.newAggregation(
unwind(B),
unwind(C),
match(...),
match(...),
match(...),
match(...),
project(B.C._id)
.andExpression("VALUE").as(B.C.value)
);
预期结果应该是id:1.1.10
,但在所有情况下,我都会得到id:1