报错的写法:
BasicDBList orList = new BasicDBList(); orList.add(new BasicDBObject().put("userGroup", userGroup)); orList.add(new BasicDBObject().put("userGroup", null)); condition.put(QueryOperators.OR, orList);
上面的写法会报错$or/$and/$nor entries need to be full objects,于是debug发现orList里显示有2条记录,但是整个orList里元素为空,这就有点奇怪了,上面不是加了2个BasicDBObject对象了吗?仔细检查才发现,使用put方法的返回值不是BasicDBObject对象,而直接返回了null。
正确的写法如下:
BasicDBList orList = new BasicDBList(); orList.add(new BasicDBObject("userGroup", userGroup)); orList.add(new BasicDBObject("userGroup", null)); condition.put(QueryOperators.OR, orList);
问题解决,特此记录。