在 Mongo 3.3.0 中使用 QueryBuilder 查询 Mongo 集合
Querying Mongo Collection using QueryBuilder in Mongo 3.3.0
我们使用 mongo-java-驱动程序 3.0.4 的代码曾经是这样的 -
DBCollection dbCollection = mongoClient.getDB(databaseName).getCollection(collectionName);
QueryBuilder queryBuilder = new QueryBuilder();
/** queryBuilder.put() for building the query */
DBCursor dbCursor = dbCollection.find(queryBuilder.get());
while(dbCursor.hasNext()) {
DBObject dbObject = dbCursor.next();
// add entries to a list of TDocument type
}
将其转换为 mongo-java-驱动程序 3.3.0,我最终得到了这个 -
MongoCollection<TDocument> collection = database.getCollection(collectionName, TDocument.class); //where TDocument is custom document class of ours
QueryBuilder queryBuilder = new QueryBuilder();
/** queryBuilder.put() for building the query */
FindIterable<TDocument> tDocumentList = collection.find(queryBuilder.get()); //this is not compiling
for (TDocument element : tDocumentList) {
names.add(element.getName()); //addition to some list of TDocument type
}
但关键是我仍然无法为我定义的 MongoDB 集合上的 find
操作编译源代码。
这里有什么需要更正的吗?我想坚持任何有助于将 mongo 升级到 3.3.0+ 的首选实现。
编辑 - 我的TDocument
class(下面的命名与库名称不同)class 是一个简单的 POJO 作为 -
public class TDocType {
private TDocType() {
}
String one;
@NotNull
String name;
String third;
String fourth;
// getter and setter for all the above
}
您可以用这样的 org.bson.Document 替换您的查询生成器:
Document query = new Document();
query.put(parameterName, parameterValue);
然后
FindIterable<TDocument> tDocumentList = collection.find(query); //this is not compiling
投射到 Bson。
FindIterable<TDocument> tDocumentList = collection.find((Bson)queryBuilder.get());
更新::
更改为使用来自 Mongo 3.3.0
的过滤器
Bson filter = Filters.eq("field", "value");
FindIterable<TDocument> tDocumentList = collection.find(filter);
我们使用 mongo-java-驱动程序 3.0.4 的代码曾经是这样的 -
DBCollection dbCollection = mongoClient.getDB(databaseName).getCollection(collectionName);
QueryBuilder queryBuilder = new QueryBuilder();
/** queryBuilder.put() for building the query */
DBCursor dbCursor = dbCollection.find(queryBuilder.get());
while(dbCursor.hasNext()) {
DBObject dbObject = dbCursor.next();
// add entries to a list of TDocument type
}
将其转换为 mongo-java-驱动程序 3.3.0,我最终得到了这个 -
MongoCollection<TDocument> collection = database.getCollection(collectionName, TDocument.class); //where TDocument is custom document class of ours
QueryBuilder queryBuilder = new QueryBuilder();
/** queryBuilder.put() for building the query */
FindIterable<TDocument> tDocumentList = collection.find(queryBuilder.get()); //this is not compiling
for (TDocument element : tDocumentList) {
names.add(element.getName()); //addition to some list of TDocument type
}
但关键是我仍然无法为我定义的 MongoDB 集合上的 find
操作编译源代码。
这里有什么需要更正的吗?我想坚持任何有助于将 mongo 升级到 3.3.0+ 的首选实现。
编辑 - 我的TDocument
class(下面的命名与库名称不同)class 是一个简单的 POJO 作为 -
public class TDocType {
private TDocType() {
}
String one;
@NotNull
String name;
String third;
String fourth;
// getter and setter for all the above
}
您可以用这样的 org.bson.Document 替换您的查询生成器:
Document query = new Document();
query.put(parameterName, parameterValue);
然后
FindIterable<TDocument> tDocumentList = collection.find(query); //this is not compiling
投射到 Bson。
FindIterable<TDocument> tDocumentList = collection.find((Bson)queryBuilder.get());
更新:: 更改为使用来自 Mongo 3.3.0
的过滤器Bson filter = Filters.eq("field", "value");
FindIterable<TDocument> tDocumentList = collection.find(filter);