如何使用$或;操作员使用java在mongodb中使用文档
这里,“abc”被“xyz”覆盖。所以,在查询中,我只得到一个值,即xyz。我不知道,为什么查询被覆盖。你能帮我解决一下吗 我的代码:如何使用$或;操作员使用java在mongodb中使用文档,java,mongodb,mongodb-query,Java,Mongodb,Mongodb Query,这里,“abc”被“xyz”覆盖。所以,在查询中,我只得到一个值,即xyz。我不知道,为什么查询被覆盖。你能帮我解决一下吗 我的代码: Document query = new Document(); query.put("firstName", "abc"); query.put("firstName", "xyz"); MongoClient mongo=新的MongoClient(“localhost”,27017); MongoDatab
Document query = new Document();
query.put("firstName", "abc");
query.put("firstName", "xyz");
MongoClient mongo=新的MongoClient(“localhost”,27017);
MongoDatabase db=mongo.getDatabase(“示例”);
MongoCollection coll=db.getCollection(“用户”);
单据查询=新建单据();
查询。输入(“名字”、“abc”);
查询。输入(“名字”、“xyz”);
单据docStatus=新单据(“$or”,查询);
try(MongoCursor=coll.find(query.iterator()){
while(cursor.hasNext()){
System.out.println(cursor.next());
}
}
您需要按照以下方式构造查询:
MongoClient mongo = new MongoClient("localhost",27017);
MongoDatabase db = mongo.getDatabase("sample");
MongoCollection<Document> coll = db.getCollection("users");
Document query = new Document();
query.put("firstName", "abc");
query.put("firstName", "xyz");
Document docStatus =new Document("$or",query );
try (MongoCursor<Document> cursor = coll.find(query).iterator()) {
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
}
运算符的参数是一个列表
,因此您只是在构建文档
的列表
:
DBObject clause1 = new BasicDBObject("firstName", "abc");
DBObject clause2 = new BasicDBObject("firstName", "xyz");
BasicDBList or = new BasicDBList();
or.add(clause1);
or.add(clause2);
DBObject query = new BasicDBObject("$or", or);
但实际上,当您希望在同一属性上使用$或条件时,请改用。这当然是另一个列表
,但只是一个值:
Document query = new Document(
"$or", Arrays.asList(
new Document("firstname", "abc"),
new Document("firstname", "xyz")
)
)
在同一文档属性上选择“任一”值的语法要短得多。BasicDBList orList=new BasicDBList()
添加(新的基本对象(“名字”、“xxx”)
添加(新的基本对象(“LastName”、“yyy”)
BasicDBObject dbObj=新的BasicDBObject(“$or”,或列表) 非常感谢你的帮助。
Document query = new Document(
"firstname",
new Document(
"$in", Arrays.asList("abc","xyz")
)
)