我有以下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 = new Query();
query.addCriteria(Criteria.where(STATUS).in(validStatus));
query.fields().include("siteId").exclude("_id");
我的查询是如何使用BasicQuery实现相同的目标。
答案 0 :(得分:1)
我想我得到了答案。我们需要使用两个String参数基本查询,而不是使用BasicQuery的单个字符串参数构造函数。
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
答案 1 :(得分:0)
BasicQuery query = new BasicQuery("{ $and: [{ studentId: { $in: "+studentIds+" } }, { status: { $ne: '"+studStatus+"'} }] }");
studentIds 是一个数组,而studStatus 是一个字符串! 感谢vashishth