我的代码有问题。我在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
提取数据。