我有一个名为Tag的简单对象,该对象具有id,名称和三个数字属性。我也有该对象的编解码器。以下代码执行无误。
MongoDatabase tagsDatabase =
usersProcess.getMongoClient().getDatabase(tagsDB)
.withCodecRegistry(usersProcess.getCodecRegistry());
MongoCollection<Tag> tagsCollection =
tagsDatabase.getCollection(tagsCollectionName, Tag.class);
ArrayList<Tag> tagsList = new ArrayList<Tag>();
FindIterable<Tag> tagsByAlpha =
tagsCollection.find().sort(Sorts.ascending("name"));
此后,代码
tagsByAlpha.forEach(new Consumer<Tag>() {
@Override
public void accept(Tag t) {
tagsList.add(t);
}
});
在第一行(forEach)处引发异常“ org.bson.BsonInvalidOperationException:仅当ContextType为ARRAY时才可以调用readEndArray,而当ContextType为DOCUMENT时才可以调用”。替代构造
MongoCursor<Tag> tagsCursor = tagsByAlpha.iterator();
引发相同的异常。似乎暗示find()返回了Documents而不是Tag对象。同时,有效的代码表明我正在尝试的事情是可能的。我在做什么错了?
答案 0 :(得分:0)
应该使用org.bson.codecs.DoubleCodec