java - cursor.next() 总是返回 "java.util.NoSuchElementException"

标签 java eclipse mongodb pymongo

我正在用 Java 编写一个程序,它从 MongoDB 读取查询结果。

下面是代码(给出了一个异常(exception)):

if(output != null){
                BasicDBObject whereQuery = new BasicDBObject();
                DBCursor cursor = null;
                for (DBObject obj : output.results()) {
                    String UserID = obj.get("UserID").toString();
                    whereQuery.put("User_ID", UserID);                                                              

                    cursor = users.find(whereQuery);
                    System.out.println(cursor.toString());
                    System.out.println("This user name who tweeted "+ cursor.next());


                }
            }

当我运行这段代码时,在最后一行使用 sysout 语句仅打印光标的第一个值,来自“for”循环的第二个值导致异常。想知道为什么吗?

cursor.next() 之前的 sysout 语句始终打印游标中的当前值,将其放置在那里以验证游标是否确实有值。

我已经为 cursor.next() 尝试了 hasNext() while 循环,它只在第一次进入循环时才跳出其余的检查。

Error stack trace:
   Exception in thread "main" java.util.NoSuchElementException
   at com.mongodb.QueryResultIterator.next(QueryResultIterator.java:111)
   at com.mongodb.DBCursor._next(DBCursor.java:510)
   at com.mongodb.DBCursor.next(DBCursor.java:581)
   at ReadData.referencedDataModel(ReadData.java:97)
   at ReadData.main(ReadData.java:131)

最佳答案

我不确定这是你的答案,但值得一试:

String UserID = obj.get("UserID").toString();
cursor = users.find(whereQuery);
if(cursor.hasNext()) {
    // the object will be your object, its basically a json document
    BasicDBObject obj = cursor.next(); 

    // print obj to console as json file
    System.out.println(obj);

    // you can get any property with obj.get...(); method such as .getString()
    // The below code will extract the User_ID from the object you received via find query 
    string id = obj.getString("User_ID");
}

如果您确定结果只有一个文档,您可以使用此代码:

BasicDBObject obj = users.findOne(whereQuery);

关于 java 和 Mongo 的非常有用的资源:

http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-java-driver/

关于java - cursor.next() 总是返回 "java.util.NoSuchElementException",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27498459/

相关文章:

node.js - NodeJS MongoDB : Multiple save requests not working

java.text.ParseException : Unparseable date: "11/11/2014"

java - Genexus Uploadify 不适用于大文件

java - 使用 JAX-RS 作为 GET 方法返回的接口(interface)

java - 避免并发修改异常

MongoDB/Mongoose 按日期排序和按用户分组

java - Java 7 和 Java 8 之间有哪些主要区别?

Eclipse 和 Maven : Run goal after a file is changed

android - 哪个 Eclipse 适用于 Android?

mongodb - 如何使用 MongoDB 在 csv 中将分隔符从逗号更改为 #