有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Mongo 3.3.0中使用QueryBuilder查询Mongo集合的java

我们与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+的首选实现

Edit-MyTDocument类(以下命名与库名不同)是一个简单的POJO,如下所示:-

public class TDocType {

    private TDocType() {
    }

    String one;

    @NotNull
    String name;

    String third;

    String fourth;

    // getter and setter for all the above
}

共 (2) 个答案

  1. # 1 楼答案

    您可以将查询生成器替换为组织。布森。文件如下:

    Document query = new Document();
    query.put(parameterName, parameterValue);
    

    然后

    FindIterable<TDocument> tDocumentList = collection.find(query); //this is not compiling
    
  2. # 2 楼答案

    投给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);