嘿所以我正在尝试使用Java驱动程序编写以下mongoDB:
db.testDB.find( {$and : [ {EntryFee : {"$lte" : 15} }, {EntryFee : {"$gte" : 10} } ] } )
我看起来像这样的java代码,其中minEntryFee和maxEntryFee都是整数。
if(minEntryFee != null && maxEntryFee != null ){
BasicDBList list = new BasicDBList();
list.add(BasicDBObjectBuilder.start().push("EntryFee").add("$gte", minEntryFee));
list.add(BasicDBObjectBuilder.start().push("EntryFee").add("$lte", maxEntryFee));
builder.add("$and", list);
return builder.get();
}
但是当我运行此代码时,我收到以下错误:
无法找到具有根本原因的com.mongodb.BasicDBObjectBuilder类的编解码器 org.bson.codecs.configuration.CodecConfigurationException:无法找到com.mongodb.BasicDBObjectBuilder类的编解码器。
有什么想法吗?感谢。
答案 0 :(得分:1)
当您通过Java驱动程序发送请求时,它会尝试将请求序列化为BSON格式,如果遇到具有未知编解码器的对象,则会抛出您上面提到的异常。
为了解决您的错误,您可以尝试更改:
BasicDBObjectBuilder.start().push("EntryFee").add("$gte", minEntryFee)
到
BasicDBObjectBuilder.start().push("EntryFee").add("$gte", minEntryFee).get()
至于第一行不返回DBObject,而是返回驱动程序中没有任何相关编解码器的BasicDBObjectBuilder。
谢谢,Yevhenii