From 4585794ef1edd022caf38770d76b9e0138d1d654 Mon Sep 17 00:00:00 2001 From: Wes Freeman Date: Wed, 25 Jan 2012 17:35:32 -0500 Subject: [PATCH] Adding support for $and queries in QueryBuilder --- src/main/com/mongodb/QueryBuilder.java | 17 +++++++++++++++++ src/test/com/mongodb/QueryBuilderTest.java | 16 ++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/src/main/com/mongodb/QueryBuilder.java b/src/main/com/mongodb/QueryBuilder.java index b88f2167994..880f55d210f 100644 --- a/src/main/com/mongodb/QueryBuilder.java +++ b/src/main/com/mongodb/QueryBuilder.java @@ -278,6 +278,23 @@ public QueryBuilder or( DBObject ... ors ){ return this; } + /** + * Equivalent to an $and operand + * @param ands + * @return + */ + @SuppressWarnings("unchecked") + public QueryBuilder and( DBObject ... ands ){ + List l = (List)_query.get( "$and" ); + if ( l == null ){ + l = new ArrayList(); + _query.put( "$and" , l ); + } + for ( DBObject o : ands ) + l.add( o ); + return this; + } + /** * Creates a DBObject query to be used for the driver's find operations * @return Returns a DBObject query instance diff --git a/src/test/com/mongodb/QueryBuilderTest.java b/src/test/com/mongodb/QueryBuilderTest.java index 07d0345751c..59a94acb740 100644 --- a/src/test/com/mongodb/QueryBuilderTest.java +++ b/src/test/com/mongodb/QueryBuilderTest.java @@ -291,6 +291,22 @@ public void testOr() { assertEquals( 2 , c.find( q ).itcount() ); } + + @Test + public void testAnd() { + DBCollection c = _testDB.getCollection( "and1" ); + c.drop(); + c.insert( new BasicDBObject( "a" , 1 ).append( "b" , 1) ); + c.insert( new BasicDBObject( "b" , 1 ) ); + + DBObject q = QueryBuilder.start() + .and( new BasicDBObject( "a" , 1 ) , + new BasicDBObject( "b" , 1 ) ) + .get(); + + assertEquals( 1 , c.find( q ).itcount() ); + } + @AfterClass public static void tearDown() {