复杂的mongo查询可在Shell中工作,但不能在c#中工作。错误:匹配管道中的文档大小超过104857600字节

时间:2019-05-17 10:31:03

标签: c# mongodb mongodb-.net-driver

我必须执行包含对其他表的查找的复杂mongo查询。 我使用mongo shell测试了查询,并且工作正常,但是当我尝试使用Mongo C#驱动程序(v 2.8.1)执行相同的查询时,我收到错误消息:

c# Command aggregate failed: Total size of documents in HistoricItems matching pipeline's $lookup stage exceeded 104857600 bytes

我已经用Google搜索类似的问题,但没有发现任何相关问题。

这是我的查询(非常复杂):

db.getCollection('Queue').aggregate([
{
    $lookup:{
       from: 'Items',
       localField: 'Queue',
       foreignField: 'Queue',
       as: 'Items'
     }
},
{
    $unwind: {
        path: '$Items',
        preserveNullAndEmptyArrays: true
    }
},
{
    $lookup:{
       'from': 'HistoricItems',
       'let': { hQueue: '$Queue' },
       'pipeline': [
          { $match:
             { $expr:
                { $and:
                   [
                     { $eq: [ "$Queue",  "$$hQueue" ] },
                     { $gte: [ "$EndDate", { $dateFromParts: { year : { $year: new Date() }, month : { $month: new Date() }, day: { $dayOfMonth: new Date() } } } ] },

                   ]
                }
             }
          }
       ],
       'as': 'ClosedItems'
     }
}
])

这是C#执行查询的方式。我正在使用自己的查询解析器将阶段添加到IAggregateFluent<BsonDocument>

IAggregateFluent<BsonDocument> partialResult = null;
                IAsyncCursor<BsonDocument> result = null;

partialResult = _Database.GetCollection<BsonDocument>(collection).Aggregate();


foreach (var stage in stages)
{
       partialResult = addStage(partialResult, stage);
}


result = partialResult.ToCursor(); //Here I'm getting mentioned exception

任何想法为何Mongo Driver与Mongo Shell会有不同的结果以及如何解决?

0 个答案:

没有答案