2017-05-05 2 views
0

私は以下のコードを使用してmongodbデータベースの簡単な検索を構築しようとしています。実行時にコードは実行されますが、決して値を返しません。Mongodb Javaクエリは値を返しません

生成されたクエリはコマンドラインで問題なく動作します。データベースは約2.8ギガバイトです。

public static void main(String[]args){ 

     String customer="peter"; 
     String job="builder"; 


     // To connect to mongodb server 
     MongoClient mongoClient=new MongoClient("localhost",27017); 

     // Now connect to your databases 
     MongoDatabase db=mongoClient.getDatabase("customers"); 
     System.out.println("Connect to database successfully"); 

     // Now connect to your collection 
     MongoCollection<Document> collection=db.getCollection("customerData"); 
     System.out.println("Connect to collection"); 

     BasicDBObject andQuery=new BasicDBObject(); 
     List<BasicDBObject> obj=new ArrayList<BasicDBObject>(); 

     obj.add(new BasicDBObject("job",job)); 
     obj.add(new BasicDBObject("customer",customer)); 
     andQuery.put("$and",obj); 

     System.out.println(andQuery.toString()); 

     FindIterable<Document> iterable=collection.find(new Document(andQuery)); 
     MongoCursor<Document> iterableDocument=iterable.iterator(); 

     while(iterableDocument.hasNext()){ 
      Document wholeDocument=(Document)iterableDocument.next(); 
      System.out.println("1: "+wholeDocument.get("age")); 
      System.out.println("2: "+wholeDocument.get("dob")); 
     } 
} 

答えて

0

DBObject obj = new BasicDBObject(); 
obj.put("job", job); 
obj.put("customer", customer); 
collection.find(new Document(obj)) 

としてクエリを簡素化してみまた、getDatabaseとgetCollectionは、接続を行いません。これらの部分のスペルを間違えた場合、空のデータベースにヒットしているため、クエリは何も返しません。 (最初に接続しようとするのは、 'find'を呼び出すときです。データベースやコレクションが存在しない場合は、Mongoが作成します)

関連する問題