Spring MongoDB BasicQuery不支持投影

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring MongoDB BasicQuery不支持投影相关的知识,希望对你有一定的参考价值。

我有以下BasicQuery

BasicQuery query2 = new BasicQuery("{status:{$in:['APPROVED','NEW','OPEN']}},{siteId:1,_id:0}");

其中BasicQuery是SpringData mongoDb org.springframework.data.mongodb.core.query.BasicQuery中的一个类。在进行调试时,上面的查询被编译进去

Query: { "status" : { "$in" : [ "APPROVED" , "NEW" , "OPEN"]}}, Fields: null, Sort: { }

但它应该编译如下

Query: { "status" : { "$in" : [ "APPROVED" , "OPEN" , "NEW"]}}, Fields: { "siteId" : 1 , "_id" : 0}, Sort: null

如果您注意到,编译的BasicQuery中仍然缺少字段。请帮助我如何在BasicQuery中拥有项目。我可以使用Query进行投影,如下所示。

Query query = new Query();
        query.addCriteria(Criteria.where(STATUS).in(validStatus));
        query.fields().include("siteId").exclude("_id");

我的查询是如何使用BasicQuery实现相同的。

答案

我想我得到了答案。而不是使用BasicQuery的单个字符串参数构造函数,我们需要使用两个String参数基本查询,如下所示。

BasicQuery query2 = new BasicQuery("{status:{$in:['APPROVED','NEW','OPEN']}}","{siteId:1,_id:0}");

上面将编译成以下查询

Query: { "status" : { "$in" : [ "APPROVED" , "OPEN" , "NEW"]}}, Fields: { "siteId" : 1 , "_id" : 0}, Sort: null

以上是关于Spring MongoDB BasicQuery不支持投影的主要内容,如果未能解决你的问题,请参考以下文章

使用Spring访问Mongodb的方法大全——Spring Data MongoDB

Spring---MongoDB

spring mongodb push操作

如何利用spring data mongodb 进行多条件查询

使用 Spring Security + Spring 数据 + MongoDB 进行身份验证

用Spring data查询mongodb的问题,求解答