2016-03-19 10 views
1

MongoDB 3.2とMongoDB Java Driver 3.2を使用しています。文書を照会するために、私は次のコードを使用します。JavaでMongoDBの特定のフィールドのみを照会する方法

Document query = new Document("fetchStatus", new Document("$lte", fetchStatusParam)); 
ArrayList<Document> unfetchedEvents = dbC_Events.find(query).into(new ArrayList<Document>()); 

このクエリは動作しますが、問題は、この場合には、ドキュメントのすべてのフィールドが(SQLselect *のアナログ)取得されていることです。クエリのパフォーマンスを最適化するために、私は本当に必要なフィールドを指定して、それらのフィールドだけを取得したいと考えています。

私のような、例のカップルが見つかりました:

BasicDBObject query = new BasicDBObject(); 
BasicDBObject fields = new BasicDBObject("Name", 1); 
coll.find(query, fields); 

が、それらのすべては、例えば、MongoDB Java Driverの古いバージョンのために設計されています2.4、私は3.2を使用しています。

私の質問:

  • 私はMongoDB Java Driver 3.2のドキュメントの特定のフィールドのみを照会することができますどのように?

答えて

5

.projection()メソッドがあり、クエリ結果に連鎖してフィールドを指定できます。

どちらかがおなじみと十分に文書BSON構文で、文書として表現:

ArrayList<Document> unfecthedEvents = collection.find(
     new Document("fetchStatus", new Document("$lte", fetchStatusParam)) 
    ).projection(
      fields(include("Name")) 
    ).into(new ArrayList<Document>()); 
+0

'.projection(fields(include(" Name ")))'期待どおりに動作します。ありがとう。 –

-1

へ:

ArrayList<Document> unfecthedEvents = collection.find(
     new Document("fetchStatus", new Document("$lte", fetchStatusParam)) 
    ).projection(
     new Document("Name",1) 
    ).into(new ArrayList<Document>()); 

それとも本当にただまったく同じBSONに変換fieldsプロパティビルダーとして

属性のリストを含む:.projection(Projections.include( "Name")))

&

属性のリストを除外する:.projection(Projections.exclude( "Name")))

関連する問題