【问题标题】:Java&Mongo: get object where field existJava&Mongo:获取字段存在的对象
【发布时间】:2013-08-07 16:39:02
【问题描述】:

情况: 我有文档集合,每个文档都包含这样的字段:“_id”(ObjectId),“userId”(String),但它也可以是字段“files”(Object)。

当我这样做时:

final Query query = new Query();           
query.fields().include("_id");           

final List<File> fileList = mongo.find(query, File.class);

因此,我得到了包含所有记录的 fileList,这很好。

但是当我这样做时,只获取“文件”字段存在的记录 - 结果是错误。

final Query query = new Query();           
query.fields().include("files");           

final List<File> fileList = mongo.find(query, File.class);

是否因为我试图获取 Object 字段而发生错误?以及如何使用 Query 或 Criteria 解决这个问题?

【问题讨论】:

  • 您对第二次查询的意图是什么?是否要检索所有包含 files 字段的文档?

标签: java spring mongodb


【解决方案1】:

您可以构造这个Query 来获取所有包含files 的文档:

Query.query(Criteria.where("files").exists(true))

【讨论】:

    【解决方案2】:

    另一种可能性是在您的方法上使用org.springframework.data.mongodb.repository.Query 注释(在使用MongoRepository 时很有用):

    @Query(value="{ files : { $exists : true } }")
    

    【讨论】:

      猜你喜欢
      • 2018-07-18
      • 1970-01-01
      • 2016-05-10
      • 1970-01-01
      • 2018-12-07
      • 1970-01-01
      • 2015-12-06
      • 2011-07-19
      • 1970-01-01
      相关资源
      最近更新 更多