我必须执行包含对其他表的查找的复杂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会有不同的结果以及如何解决?