簡體   English   中英

如何使用Java在mongodb中使用文檔使用“ $ or”運算符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM