我真的在这里苦苦挣扎,看过其他问题,但似乎无法得到我需要的答案。
我要做的是拉出列的所有唯一值,然后遍历它们并将它们添加到数组中。结束时,一列存储在我的数组中,但每个值中的一个不存在,就像当前存在的那样。
每次我尝试做.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());
}
答案 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
)以获得结果。