0

情况:我有文档集合,每个文档都包含这样的字段:“_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 解决这个问题?

4

2 回答 2

2

您可以构造它Query以获取包含files归档的所有文档:

Query.query(Criteria.where("files").exists(true))
于 2013-08-06T15:41:24.373 回答
1

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

@Query(value="{ files : { $exists : true } }")
于 2020-03-15T15:57:42.303 回答