#mongoose
#мангуст
Вопрос:
У меня есть такой документ
{ _id:ObjectId, subdocuments:[{ arrayField:[String] }] }
Как я могу получить общую длину arrayField
s, содержащуюся в моем родительском документе? Я могу получить количество вложенных $size : "$subdocuments"
документов , но мне нужно что-то вроде $size : "$subdocuments.arrayField"
Ответ №1:
Я не могу придумать лучшего способа, но это должно сработать:
db.collections.aggregate( { $unwind: "$subdocuments" }, { $project: { "arrayFieldLength": { $strLenCP: "$subdocuments.arrayField" } });
Ответ №2:
То, что я в итоге сделал, — это использовал $map
оператор вот так
{ $addFields:{ myLength:{ $sum:{ $map: { input: "$subdocuments.arrayField", as: "iterator", in: { $size: "$iterator" }, }, } } } }