2016-12-06 4 views
2

私はここで本当に苦労しており、他の質問を見てきましたが、私は必要な答えを得ることができないようです。Java 3.0は列mongodbから異なる値を取得します

私がしようとしているのは、列のすべてのユニークな値を抜き取り、それらを反復して配列に追加することです。私の配列に格納されている1つの列で終わるが、現在存在するような複数の列ではない各値の1つが存在する。

私が試してみるたびに、私は戻ってくるクラスを求めます。私は多くの異なるクラスを試しましたが、うまくいかないようです...コードは助けになると思います。

public static void MediaInteraction() { 
    //Storing data from MediaInteraction in MediaArray 
    //BasicDBObject Query = new BasicDBObject(); 
    //Query.put("consumerid", ""); 



    MongoCursor<Document> cursormedia = collectionmedia.distinct("consumerid", (What do I put here?)).iterator(); 

    while (cursormedia.hasNext()) { 
     System.out.println(cursormedia.next()); 
     MediasessionID.add(cursormedia.next()); 

    } 
    System.out.println("Media Array Complete"); 
    System.out.println(MediasessionID.size()); 
} 
+0

'collectionmedia'とは何ですか?また、どのバージョンのmongodbクライアントを使って使用状況を確認していますか? – nullpointer

+0

これはアプリケーションのやりとりの集合で、私の大学から私に与えられたタスクです。私はファイルがユニークな消費者IDの場合、Excelは既に私が1042の回答を得なければならない500kの行から私に教えていますが、私はmongoコレクションとリンクしているJavaを通してそれを行うことができる必要があります。私はバージョン3.2.10を使用します。 – User87797

答えて

1

あなたはおそらくご紹介したいの変化は、多少のようなものでなければならない - docsからも

MongoCursor<Document> cursormedia = collectionmedia.distinct("consumerid", 
     <ConsumerId-DataType>.class).iterator(); //please replace the consumerId field's datatype here 

- あなたの例ではそう

/** 
    * Gets the distinct values of the specified field name. 
    * 
    * @param fieldName the field name 
    * @param resultClass the class to cast any distinct items into. 
    * @param <TResult> the target type of the iterable. 
    * @return an iterable of distinct values 
    * @mongodb.driver.manual reference/command/distinct/ Distinct 
    */ 
    <TResult> DistinctIterable<TResult> distinct(String fieldName, Class<TResult> resultClass); 

、あなたが達成しようとしている場合Documentの場合は、上記の推奨コードでDocument.classを使用します。

編集 - またあなたが二回あなたのMediasessionIDの数が半減されるだろうcursormedia.next()を呼び出しているという事実。それを一度改善すると結果が得られます(.next)。

+0

ありがとう、私はこれを使用し、今回はうまくいきました:MongoCursor cursormedia = collectionmedia.distinct( "consumerid"、String.class).iterator();ありがとうございました!それは私に521の結果をもたらしますが、私は結果が1042であることを知っていますので、私はちょうど1/2を得ています。ありがとう! – User87797

+0

あなたのロジックで 'cursormedia.next()'が2回呼び出されました。 1つはprintステートメントの中にあります。ちょうど試して、それをコメントアウトして正しい詳細を見てください。もちろん – nullpointer

+0

!ありがとうございました!! – User87797

関連する問題