我的代码有问题。我在Mongo中有一个对象集合,所有对象都有一个“名称”,“描述”,“ imageURL”,“代码”。

我想搜索我的集合并返回所有名称,描述,代码和imageURL的ArrayList

我这样尝试过

else{
            DBCursor cursair = this.searchItem(code);
            while(cursair.hasNext()){
                this.searchNames = new ArrayList<String>();
                this.searchBarcodes = new ArrayList<String>();
                this.searchDescriptions = new ArrayList<String>();
                this.searchImageURLs = new ArrayList<String>();
                this.searchNames.add(cursair.curr().get(ITEMS_NAME).toString());
                this.searchDescriptions.add(cursair.curr().get(ITEMS_DESCRIPTION).toString());
                this.searchImageURLs.add(cursair.curr().get(ITEMS_IMAGEURL).toString());
                this.searchBarcodes.add(cursair.next().get(ITEMS_CODE).toString());
            }


我对此有疑问,因为它在this.searchNames.add(cursair.curr().get(ITEMS_NAME).toString());处提供了NullPointerException。
ITEMS_NAME是代码中定义的String常量。

searchItem(code)方法看起来像这样

public DBCursor searchItem(String searchQuery){

    BasicDBObject query = new BasicDBObject();
    query.put(ITEMS_NAME, java.util.regex.Pattern.compile(searchQuery));
    DBCursor cursor = itemsCollection.find(query);
    return cursor;
}


我还检查了调试器,当我调用cursor.toArray()时,它返回一个大小为5的List<DBObject>,因此我对游标本身具有正确的信息非常有信心。

最佳答案

您想调用cursair.next()作为while循环的第一步,并使用返回的DBObject提取数据。

10-06 09:49