数据库
首页 > 数据库> > java-如何操作$concat使用spring mongodb

java-如何操作$concat使用spring mongodb

作者:互联网

我正在使用spring-data-mongodb(版本为1.8.1版本)来操作我的mongodb,
但是我遇到了一个问题.
我想使用聚合投影一个新的领域,其中使用#concat来加入两个领域.像这样:

{
"$project":{
    "idai" : {
        "$concat": [
        {"$substr":["$channel_id",0,-1]},
        "-",
        {"$substr":["$no_ai",0,-1]}
        ]
    },
    ...
}

下面的代码是我的java代码

AggregationResults<QualifyHourData> results = mongoOps.aggregate(newAggregation(HisAiInfo.class, 
            match(where("date").gte(startTime.toDate()).lt(endTime.toDate())),
            project("date","zset").andExpression("$channelId + [0] + $noAi",CHAR_CHANNELID_NOAI).as("idai"),
            ...
            ), QualifyHourData.class);

运行时,日志为:

{ 
  "aggregate" : "last" , 
  "pipeline" : [ 
    { "$match" : { "date" : { "$gte" : { "$date" : "2015-11-30T16:00:00.000Z"} , "$lt" : { "$date" : "2015-12-31T16:00:00.000Z"}}}},
    { "$project" : { "date" : 1 , "zset" : 1 , "idai" : { "$add" : [ "$channel_id" , "_" , "$no_ai"]}}} , ...
  ]
}

看,这不是我的过期.
请帮忙!!!

解决方法:

刚刚总结了可以帮助其他人解决相同问题的解决方案.

您可以使用org.springframework.data.mongodb.core.aggregation.ProjectionOperation类中的“ andExpression”函数来连接值.

例:-

ProjectionOperation project = Aggregation.project("year", "initial").andExpression("concat(year,'-', initial)").as("yearAndInitial");

标签:mongodb,spring-data-mongodb,spring,java
来源: https://codeday.me/bug/20191027/1945568.html