Java 3.0从列mongodb获取不同的值

时间:2016-12-06 11:03:44

标签: java mongodb

我真的在这里苦苦挣扎,看过其他问题,但似乎无法得到我需要的答案。

我要做的是拉出列的所有唯一值,然后遍历它们并将它们添加到数组中。结束时,一列存储在我的数组中,但每个值中的一个不存在,就像当前存在的那样。

每次我尝试做.distinct它询问我返回课程我尝试了很多不同的课程,但它似乎不起作用...代码低于任何帮助将不胜感激。

 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());
}

1 个答案:

答案 0 :(得分:2)

您可能想要介绍的更改有点像 -

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

同样来自docs -

/**
 * 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

编辑 - 此外,您cursormedia.next()计算MediasessionID两倍的事实将被减半。建议您进一步改进(.next)以获得结果。