Мне нужно выполнить сложный монго-запрос, содержащий поиск в других таблицах.Я проверил запрос в оболочке mongo и работает без проблем, но когда я пытаюсь выполнить тот же запрос, используя драйвер Mongo C # (v 2.8.1), я получаю сообщение об ошибке:
c# Command aggregate failed: Total size of documents in HistoricItems matching pipeline's $lookup stage exceeded 104857600 bytes
Я гуглил для похожихпроблемы, но я не нашел ничего связанного.
Вот мой запрос (довольно сложный):
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, и как их решить?