java - MongoDB - 在java中实现nor查询

标签 java mongodb mongo-java mongo-java-driver

我尝试在 Java 中实现以下查询(我正在使用 3.4.2 mongo-java 驱动程序):

Json:

     {
      "_id" : "Team:2334918",
      "fieldName" : [
                "Delivery",
                "Support"
            ],
      "isDeleted" : false
      }

这里是查询:

  db.myCollection.find({$nor: [{“fieldName”: {$exists: false}},{“fieldName”:{$size:0}}]})

我编写了以下代码来实现上述查询:

    MongoClient mc = ctm.getMongoConn();
     db = ctm.getDatabase(mc);
     col = db.getCollection(collectionName);

    BasicDBObject searchObject = new BasicDBObject();
    List<BasicDBObject> searchArguments = new ArrayList<BasicDBObject>();

    searchArguments.add(new BasicDBObject("fieldName",new BasicDBObject("$exists",false)));
    searchArguments.add(new BasicDBObject("fieldName",new BasicDBObject("$size",0)));
    searchObject.put("$nor", searchArguments);

    MongoCursor<Document> curs = (MongoCursor<Document>) col.find(searchObject);

    while (curs.hasNext()){

             Document doc = curs.next();
             Object name1 = doc.get("fieldName");

             System.out.println(name1.toString());
             j++;
         }

运行时出现以下错误:

java.lang.ClassCastException: com.mongodb.FindIterableImpl cannot be cast to com.mongodb.client.MongoCursor

最佳答案

替换这个:

MongoCursor<Document> curs = (MongoCursor<Document>) col.find(searchObject);

while (curs.hasNext()) {

}

这样:

FindIterable<Document> docs = col.find(searchObject);

for (Document d : docs) {

}

@Veeram 的建议(在上面的评论中)也是正确的。

关于java - MongoDB - 在java中实现nor查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48192251/

相关文章:

java - Apache Kafka 从代码创建主题

java - 将 Java Spring 代码从 AggregationOutput 更改为 DBCollection 聚合方法

mongodb - Mongoose 返回包含属性内任何位置的值的所有文档

mongodb - 根据 MongoDB 中的属性更新嵌套数组对象

java - 使用java在mongodb中查找包含包含特定值的数组的文档

java - 程序跳过输入之一

java - ElasticSearch:脚本内联减去日期

java - ZeroConf 浏览器中未找到 JmDNS 服务

mongodb - 使用 $where 查询子数组类型文档的多个条件

java - 通过 Java 执行 Mongo like Query (JSON)