【问题标题】:FieldPath field names may not contain '.'FieldPath 字段名称可能不包含“。”
【发布时间】:2017-09-27 10:04:03
【问题描述】:

对于 mongodb 3.2,以下查询成功运行。

db.user_log.aggregate([{ "$match" : { "user_id" : "1" , "page_id" : "678761252281073"}} , { "$sort" : { "meta_data.access_times" : -1}} , { "$group" : { "_id" : { "first_name" : "$meta_data.user_data.first_name" , "last_name" : "$meta_data.user_data.last_name" , "profile_pic" : "$meta_data.user_data.profile_pic" , "user_id" : "$user_id" , "star_value" : "$star_value" , "access.times" : "$meta_data.access_times"}}}])

Java 代码 -

Aggregation aggregation =  newAggregation(
            match(Criteria.where("user_id").is("123")),
            sort(Sort.Direction.DESC, "meta_data.access_times"),
            group(Fields.fields().and("first_name", "$meta_data.user_data.first_name").and("last_name", "$meta_data.user_data.last_name").and("profile_pic", "$meta_data.user_data.profile_pic").and("user_id", "$user_id").and("star_value", "$star_value").and("access.times", "$meta_data.access_times"))
        );
AggregationResults<UsersMongoResult> groupResults = mongoTemplate.aggregate(aggregation, "user_log", UsersMongoResult.class);

但升级到 3.4 后出现以下异常

org.springframework.dao.InvalidDataAccessApiUsageException: 命令 执行失败:错误[FieldPath 字段名称可能不包含'.'。]

这背后的原因是什么,我该如何解决这个问题 ?

【问题讨论】:

  • 你能添加你的spring代码吗?你用的是什么版本的spring mongo?
  • spring boot 1.5.2 和 mongodb 3.4
  • 你还能添加抛出异常的java代码吗?
  • 我更新了问题

标签: spring mongodb


【解决方案1】:

问题是access.times,在您的字段中使用. 是一种不好的做法,因为它会与嵌套元素发生冲突。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-16
    • 2020-11-27
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    • 2017-04-11
    相关资源
    最近更新 更多