用于和/或组合的Mongo Java查询
我需要Java驱动程序mongo查询和/或组合- 例如— 假设我有一个集合,用户有3个名为a、b、c的字段 现在我必须执行如下的查找查询-用于和/或组合的Mongo Java查询,java,mongodb,Java,Mongodb,我需要Java驱动程序mongo查询和/或组合- 例如— 假设我有一个集合,用户有3个名为a、b、c的字段 现在我必须执行如下的查找查询- user.find({$and :[{"a":"text"},{$or :[{"b":"text"},{"c":"text"}]}]}) 此mongo控制台查询提供正确的结果。 我如何将其应用于JAVA mongo驱动程序 请帮忙 提前感谢您可以使用以下查询 DBCollection userCollection = db.getCollection("c
user.find({$and :[{"a":"text"},{$or :[{"b":"text"},{"c":"text"}]}]})
此mongo控制台查询提供正确的结果。
我如何将其应用于JAVA mongo驱动程序
请帮忙
提前感谢您可以使用以下查询
DBCollection userCollection = db.getCollection("collection");
BasicDBObject orQuery = new BasicDBObject();
List<BasicDBObject> obj1 = new ArrayList<BasicDBObject>();
obj1.add(new BasicDBObject("a", "text"));
obj1.add(new BasicDBObject("b", "text"));
orQuery.put("$or", obj1);
BasicDBObject andQuery = new BasicDBObject();
List<BasicDBObject> obj = new ArrayList<BasicDBObject>();
obj.add(new BasicDBObject("c", "text"));
obj.add(orQuery);
andQuery.put("$and", obj);
System.out.println(andQuery.toString());
DBCursor cursor = userCollection.find(andQuery);
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
您可以使用以下查询
DBCollection userCollection = db.getCollection("collection");
BasicDBObject orQuery = new BasicDBObject();
List<BasicDBObject> obj1 = new ArrayList<BasicDBObject>();
obj1.add(new BasicDBObject("a", "text"));
obj1.add(new BasicDBObject("b", "text"));
orQuery.put("$or", obj1);
BasicDBObject andQuery = new BasicDBObject();
List<BasicDBObject> obj = new ArrayList<BasicDBObject>();
obj.add(new BasicDBObject("c", "text"));
obj.add(orQuery);
andQuery.put("$and", obj);
System.out.println(andQuery.toString());
DBCursor cursor = userCollection.find(andQuery);
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
我认为您不需要$and,因为当您的查询中有多个字段时,它们是$and,并且会自动进行ed。唯一需要$and的情况是,在同一字段上有多个条件,通常有不同的运算符。此外,您使用新的QueryBuilder API还是使用嵌套的DBObject和DBList的旧API?感谢Philipp的回复,我使用的是旧的DBObject API。你能告诉我这个查询吗?我认为你不需要$and,因为当你的查询中有多个字段时,它们是$and,并且会自动被赋值。唯一需要$and的情况是,在同一字段上有多个条件,通常有不同的运算符。此外,您使用新的QueryBuilder API还是使用嵌套的DBObject和DBList的旧API?感谢Philipp的回复,我使用的是旧的DBObject API。你能告诉我这个问题吗?谢谢尼利斯,真的很有帮助!谢谢Nilesh,真的很有帮助!