Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用$匹配“;及$或;java中的mongo聚合_Java_Mongodb_Mongodb Query_Aggregation Framework - Fatal编程技术网

如何使用$匹配“;及$或;java中的mongo聚合

如何使用$匹配“;及$或;java中的mongo聚合,java,mongodb,mongodb-query,aggregation-framework,Java,Mongodb,Mongodb Query,Aggregation Framework,我正在尝试使用聚合查询将匹配的文档加载到临时集合中。实际上,我能够将所有匹配的文档加载到MongoDB的临时集合中,但是我的java程序在for循环中抛出了Null指针异常 我完全被困在这里了。我可以知道这种情况下出现空指针异常的原因吗。谁能给我推荐一下同样的 Document query = {"$or":[{"roll":1,"joiningDate":{"$gte":ISODate("2017-04-11T00:00:00Z")}},{"roll":2,"joiningDate":{"$

我正在尝试使用聚合查询将匹配的文档加载到临时集合中。实际上,我能够将所有匹配的文档加载到MongoDB的临时集合中,但是我的java程序在for循环中抛出了Null指针异常

我完全被困在这里了。我可以知道这种情况下出现空指针异常的原因吗。谁能给我推荐一下同样的

 Document query = {"$or":[{"roll":1,"joiningDate":{"$gte":ISODate("2017-04-11T00:00:00Z")}},{"roll":2,"joiningDate":{"$gte": ISODate("2017-03-17T00:00:00Z")}}]};

            Document match = new Document("$match",new Document("$or",query));

            Document out =new Document("$out","TempCol");

            System.out.println("Before Aggregation");

            AggregateIterable<Document> resultAgg = collection.aggregate(Arrays.asList(match,out));

            System.out.println("After aggregation");

            for (Document doc : resultAgg){


                    System.out.println("The result of aggregation match:-");

            }

            System.out.println("Completed");
documentquery={“$or”:[{“roll”:1,“joiningDate”:{“$gte”:ISODate(“2017-04-11T00:00:00Z”)},{“roll”:2,“joiningDate”:{“$gte”:ISODate(“2017-03-17T00:00:00Z”)};
单据匹配=新单据(“$match”,新单据(“$or”,查询));
文件输出=新文件(“$out”,“TempCol”);
System.out.println(“聚合前”);
AggregateItableResultagg=collection.aggregate(Arrays.asList(match,out));
System.out.println(“聚合后”);
用于(文档文档:resultAgg){
System.out.println(“聚合匹配结果:-”);
}
系统输出打印项次(“完成”);

我通常更喜欢将管道结构保持在一个变量中

但这里的总体思路是使用
文档
查看
{}
数组

List<Document> pipeline = Arrays.<Document>asList(
  new Document("$match",
    new Document("$or", Arrays.<Document>asList(
      new Document("roll", 1)
        .append("joiningDate", new Document(
          "$gte", new DateTime(2017,04,11,0,0,0, DateTimeZone.UTC).toDate()
        )),
      new Document("controlId", 2)
        .append("joiningDate", new Document(
          "$gte", new DateTime(2017,03,17,0,0,0, DateTimeZone.UTC).toDate()
        ))
    ))
  ),
  new Document("$out","TempCol")
);

AggregateIterable<Document> resultAgg = controlIssueCollection.aggregate(pipeline);
List pipeline=Arrays.asList(
新文档(“$match”,
新文档(“$or”,Arrays.asList)(
新文件(“卷”,1)
.附加(“合并日期”),新文件(
“$gte”,新的日期时间(2017,04,11,0,0,0,DateTimeZone.UTC)
)),
新文档(“controlId”,2)
.附加(“合并日期”),新文件(
“$gte”,新的日期时间(2017,03,17,0,0,0,DateTimeZone.UTC)
))
))
),
新文件(“$out”,“TempCol”)
);
AggregateItable resultAgg=controlIssueCollection.aggregate(管道);
另外,在使用您最喜欢的构造方法(对于我来说,
org.joda.time.DateTime
)构造
Date
对象时,请确保您使用的是UTC时间,除非您真的另有意思。如果您与存储在MongoDB中的值进行比较,如shell中所示,那么您指的是UTC