2017-03-01 7 views
2

私は映画についてMongoDBに接続されたJavaアプリケーションを構築していますので、ComboBoxを作成してフィルム名を入力できます。私の問題は、映画の名前を取得するのではなく、完全なドキュメントを埋め込むことがわかっている唯一の方法です。コンボボックスにドキュメントフィールドを埋め込む

これは私がこれまで持っているものです。

DBCursor films = collection.find();  
while(films.hasNext()){ 
    comboBox.addItem(films.next()); 
} 

これは私が文書を作成する方法である:

DBCollection table = db.getCollection("films");     
BasicDBObject document = new BasicDBObject(); 

document.put("title", titulo.getText()); 
document.put("arg", argumento.getText()); 
document.put("date", fecha.getText()); 
document.put("genres", genres); 

table.insert(document); 

はその後、映画のタイトルを取得し、表示に見つける使用するが方法です。値だけ?前もって感謝します。

なっ重複質問で

EDITは、問題は、そのフィールドのいずれかに基づいて特定の文書を見つけることに関連しています。それは私が必要とするものではありません、私は1つのフィールドでコンボボックスを作成する必要がありますが、私はすべてのドキュメントを取得する必要があります。

+0

[MongoDBのコレクション内のいくつかの値を探す?](http://stackoverflow.com/questions/8327676/find-some-values-in-a-mongodb-collection) –

+0

Iドン」の可能性の重複それが重複していると思う、私は特定のドキュメントを見つける必要はありません、私はそれらをすべて1つのフィールドを取得するだけでリストする必要があります。 –

+0

あなたのmongo dbドライバのバージョンは何ですか? – Veeram

答えて

2

を使うと、結果セット内の特定のフィールドのみを取得したい場合は、あなたがfind(DBObject query, DBObject projection)を使用して、次のように投影パラメータで取得するフィールドを指定する必要があります。

// Retrieve only the title of all the documents that can be found in the collection 
DBCursor cursor = collection.find(
    new BasicDBObject(), new BasicDBObject("title", Boolean.TRUE) 
); 
while(cursor.hasNext()){ 
    // Add the value of the title to the combo box 
    comboBox.addItem((String) cursor.next().get("title")); 
} 
1

返されるキーにfind()パスを使用するのではなく、この場合、私はあなたが戻ってほしいと思うのはすべてタイトルだと信じています。だから、これは動作するはずです:

DBCursor films = collection.find({},{"_id":0,"title":1});  
while(films.hasNext()){ 
    comboBox.addItem(films.next()); 
} 
1

DBObjectおよびDBCollectionは古い2.xクラスです。

3.xドライバのようなものを試すことができます。

import static com.mongodb.client.model.Projections.*; 

MongoClient mongoClient = new MongoClient(); 
MongoDatabase db = mongoClient.getDatabase("test"); 
MongoCollection<Document> col = db.getCollection("films"); 

List<String> titles = col.find().projection(fields(include("titles"), excludeId())).map(document -> document.getString("titles")).into(new ArrayList<>()); 
関連する問題