[英]How to use “$or” operator using documents in mongodb using java
Document query = new Document();
query.put("firstName", "abc");
query.put("firstName", "xyz");
在這里,“ abc”被“ xyz”覆蓋。因此,在查詢中,我僅獲得一個值,即xyz。我不知道為什么查詢被覆蓋。您能幫我嗎...
我的代碼:
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());
}
}
$or
運算符的參數是一個List
,因此您只是構造一個Document
List
:
Document query = new Document(
"$or", Arrays.asList(
new Document("firstname", "abc"),
new Document("firstname", "xyz")
)
)
但是,實際上,當您希望在同一屬性上使用$in
$or
條件時,請改用$in
。 當然這是另一個List
但只是值:
Document query = new Document(
"firstname",
new Document(
"$in", Arrays.asList("abc","xyz")
)
)
在同一文檔屬性上選擇“任一個”值的語法要短得多。
您需要按以下方式構造查詢:
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);
BasicDBList或List = new BasicDBList();
orList.add(new BasicDBObject(“ FirstName”,“ xxx”));
orList.add(new BasicDBObject(“ LastName”,“ yyy”));
BasicDBObject dbObj =新的BasicDBObject(“ $ or”,orList);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.