如何使用$或;操作员使用java在mongodb中使用文档

如何使用$或;操作员使用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

这里,“abc”被“xyz”覆盖。所以,在查询中,我只得到一个值,即xyz。我不知道,为什么查询被覆盖。你能帮我解决一下吗

我的代码:

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")
    )
)