使用AND或条件在Java中查询MongoDB

使用AND或条件在Java中查询MongoDB,java,mongodb,logical-operators,Java,Mongodb,Logical Operators,我是MongoDB的新手,需要用Java查询MongoDB。对于简单的查询,我可以编写等效的Java代码,但下面的查询有点复杂,无法了解如何编写等效的Java代码 下面是等效的MongoDB查询 db.FILE_JOURNEY.find( {$and :[ { $or: [ { SUBSCRIBERID: "225136298" }, { SUBSCRIBERID : null} ]

我是
MongoDB
的新手,需要用Java查询
MongoDB
。对于简单的查询,我可以编写等效的Java代码,但下面的查询有点复杂,无法了解如何编写等效的Java代码

下面是等效的MongoDB查询

db.FILE_JOURNEY.find(  {$and :[ {
                                    $or: [ { SUBSCRIBERID: "225136298" }, { SUBSCRIBERID : null} ]
                                },      
                                {   
                                    $or: [ { BATCHID : "615060299" }, { FILENAME : "TR.NYHBE.834Q.D.212311980342.QHP.dat" } ]  
                                }
                              ] 
                        } 
                    )

这里,
FILE\u travely
是一个集合。

可以这样写:

MongoClient mongoClient = new MongoClient();
DB db = mongoClient.getDB( DBNAME );

DBCollection collection = db.getCollection( "FILE_JOURNEY" );

DBObject subscriberId = new BasicDBObject( "SUBSCRIBERID", "225136298" );
DBObject subscriberIdIsNull = new BasicDBObject( "SUBSCRIBERID", null );
BasicDBList firstOrValues = new BasicDBList();
firstOrValues.add( subscriberId );
firstOrValues.add( subscriberIdIsNull );
DBObject firstOr = new BasicDBObject( "$or", firstOrValues );

DBObject batchId = new BasicDBObject( "BATCHID", "615060299" );
DBObject fileName = new BasicDBObject( "FILENAME", "TR.NYHBE.834Q.D.212311980342.QHP.dat" );
BasicDBList secondOrValues = new BasicDBList();
secondOrValues.add( batchId );
secondOrValues.add( fileName );
DBObject secondOr = new BasicDBObject( "$or", secondOrValues );
BasicDBList andValues = new BasicDBList();
andValues.add( firstOr );
andValues.add( secondOr );

DBObject query = new BasicDBObject( "$and", andValues );

DBCursor cursor = collection.find( query );

可以这样写:

MongoClient mongoClient = new MongoClient();
DB db = mongoClient.getDB( DBNAME );

DBCollection collection = db.getCollection( "FILE_JOURNEY" );

DBObject subscriberId = new BasicDBObject( "SUBSCRIBERID", "225136298" );
DBObject subscriberIdIsNull = new BasicDBObject( "SUBSCRIBERID", null );
BasicDBList firstOrValues = new BasicDBList();
firstOrValues.add( subscriberId );
firstOrValues.add( subscriberIdIsNull );
DBObject firstOr = new BasicDBObject( "$or", firstOrValues );

DBObject batchId = new BasicDBObject( "BATCHID", "615060299" );
DBObject fileName = new BasicDBObject( "FILENAME", "TR.NYHBE.834Q.D.212311980342.QHP.dat" );
BasicDBList secondOrValues = new BasicDBList();
secondOrValues.add( batchId );
secondOrValues.add( fileName );
DBObject secondOr = new BasicDBObject( "$or", secondOrValues );
BasicDBList andValues = new BasicDBList();
andValues.add( firstOr );
andValues.add( secondOr );

DBObject query = new BasicDBObject( "$and", andValues );

DBCursor cursor = collection.find( query );

我需要为这些值构造一个Java对象。一旦我得到了游标,我怎么做呢?有了游标,你可以迭代结果,它们是DBObject类的实例。看一看,我需要为这些值构造一个Java对象。一旦我得到了游标,我该怎么做呢?有了游标,你可以迭代结果,它们是DBObject类的实例。看看