【问题标题】:how to operate $concat use spring mongodb如何操作$concat 使用spring mongodb
【发布时间】:2015-12-15 09:04:46
【问题描述】:

我正在使用spring-data-mongodb(版本为1.8.1.release)来操作我的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"]}}} , ...
  ]
}

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

【问题讨论】:

  • $concat可以这样使用.andExpression("concat(name, 'foo-bar')").
  • @ChristophStrobl 谢谢你的帮助,我很喜欢我的问题,使用你的建议

标签: java spring mongodb spring-data-mongodb


【解决方案1】:

只是总结了解决方案以帮助其他遇到相同问题的人。

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

示例:-

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

【讨论】:

    【解决方案2】:

    截至Spring Data MongoDB 2.0,您可以使用StringUtils.Concat

    project("_id",)
        .and("firstName")
        .concat(" ", fields("lastName"))
        .as("fullName"),
    

    【讨论】:

      猜你喜欢
      • 2015-05-25
      • 2018-11-29
      • 1970-01-01
      • 2020-12-30
      • 1970-01-01
      • 2018-05-17
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多