Учитывая следующий код:
Classes.aggregate([
{
$lookup: {
from: "files",
localField: "classId",
foreignField: "_id",
as: "cl"
}
}, {
$unwind: "$files"
},
{
$project: {
"_id": 1,
"files.file": 1
}
},
{
"$group": {
"_id": "$_id"
}
}
]).exec...
Я получаю следующую ошибку:
Общий размер документов в файлах, соответствующих { $match: { $and: [ { _id.str: { $eq: null } }, {} ] } }, превышает максимальный размер документа
Я читал другие статьи о StackOverflow, но, похоже, не могу решить.
У меня есть коллекция классов с полем _id в mongodb (ObjectId)
Оператор соединения пытается присоединиться к коллекции файлов по classId (строка)
Обратите внимание, что стабильные файлы содержат поле, называемое буфером, которое содержит данные base64. (большой размер поля)
Заранее спасибо, Джадсон
$unwind
неверен. Как объяснено в связанный дубликат добавление$unwind
— правильное решение, однако вы указали неверный путь к полю. Это должно быть{ "$unwind": "$cl" }
, что было бы выходным массивом, указанным с помощью"as": "cl"
, и примененное действиеunwinding
фактически создает эти отдельные документы вместо массива. Использование неправильного пути отменяет требуемое изменение. - person Neil Lunn   schedule 21.08.2017