有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java这个本机Mongo聚合管道的Spring等价物是什么?

我有下面的原生Mongo聚合管道,它提供了我所需要的东西

db.getCollection('CONFIG').aggregate([
    {'$match': {_id: 'COLLECTIONS_META'}},
    {'$unwind': '$value'},
    {'$group': {'_id': 'COLLECTION_NAMES', 'value': {'$push': '$value.suffix'}}}
])

然而,由于我必须在Spring聚合管道中编写这篇文章,我所能想到的就是以下内容

Aggregation.newAggregation(
    Aggregation.match(Criteria.where("_id")
        .is("COLLECTIONS_META")),
    Aggregation.unwind("value"),
    Aggregation.group().push("value.suffix").as("value"),
    Aggregation.project("value")
        .and("COLLECTION_NAMES")
        .asLiteral()
        .as("_id")
);

如您所见,这实际上不是本机管道的等价物。当Spring管道转换为其本机对应管道时,这一点很明显

{
   "aggregate":"__collection__",
   "pipeline":[
      {
         "$match":{
            "_id":"COLLECTIONS_META"
         }
      },
      {
         "$unwind":"$value"
      },
      {
         "$group":{
            "_id":null,
            "value":{
               "$push":"$value.suffix"
            }
         }
      },
      {
         "$project":{
            "value":1,
            "_id":{
               "$literal":"COLLECTION_NAMES"
            }
         }
      }
   ]
}

我错过了什么?我想省略我在管道的Spring版本末尾所做的投影


共 (0) 个答案