Java/MongoDB - 如何解决“exception:pipeline element 0 is not an object”错误

3
我正在使用aggregate()方法,并在光标中查看结果,为此我使用以下代码:
                 dbObjArray = new BasicDBObject[2]
                 dbObjArray[0]= cruxLevel
                 dbObjArray[1] = project
                // dbObjArray[2] = out
                 List<DBObject> pipeline = Arrays.asList(dbObjArray)
                 if (!datasetObject?.isFlat && jsonFor != 'collection-grid') {
                     println '-------------------------------- inside if block bbb--------------------------------------'
                     output= dataSetCollection.aggregate(pipeline)
                 }else{

                     /*DBObject out = new BasicDBObject('$out':"datasetTemp");
                     def db = getDB()*/

                     println '-------------------------------- inside else block--------------------------------------'

                      AggregationOptions aggregationOptions = AggregationOptions.builder()
                     .batchSize(100)
                     .outputMode(AggregationOptions.OutputMode.CURSOR)
                     .allowDiskUse(true)
                     .build();

                     output = dataSetCollection.aggregate(project)
                 }

我遇到了以下错误。

com.mongodb.CommandFailureException: { "serverUsed" : "127.0.0.1:15847" , "errmsg" : "exception: pipeline element 0 is not an object" , "code" : 15942 , "ok" : 0.0}

请问我做错了什么,请帮忙解决!

谢谢。


你的问题缺少一些关键要素,这些要素对于调试非常有帮助。例如,变量cruxLevelproject的值是什么?管道的JSON等效表示是什么? - chridam
@chridam,请告诉我你需要什么帮助。cruxlevel和project都非常复杂。 - user4408375
变量 cruxLevelproject 的值是什么? - chridam
@chridam 请查看编辑 - user4408375
1个回答

2
def dbObjArray = new BasicDBObject[1]
dbObjArray[0]= project
List<DBObject> flatPipeline = Arrays.asList(dbObjArray)

AggregationOptions aggregationOptions = AggregationOptions.builder()
                                        .batchSize(100)
                                        .outputMode(AggregationOptions.OutputMode.CURSOR)
                                        .allowDiskUse(true)
                                        .build();
def cursor = dataSetCollection.aggregate(flatPipeline,aggregationOptions)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接