Есть некоторые запросы к базе которые выполняются более 100ms, я уже и наугад пробовал индексы создать и все безрезультатно.
Вот пример запроса
Collection
.aggregate([
{ $match: {
owner: request.owner._id,
public: { $gte: 1 },
catalog: {
$nin: [ObjectId('id')]
}
}},
{ $sort: { createdAt: -1 } },
{ $skip: request.params.skip },
{ $limit: request.params.limit },
{
$lookup: {
from: 'users',
localField: 'owner',
foreignField: '_id',
as: 'owner'
}
}, {
$project: {
_id: 1,
image: { $concat: ['$domain', 'thumb/', '$image', '?route=thumb&h=350'] },
href: { $concat: [config.domain.href, 'posts/', '$url', '.html'] },
tags: { $slice: ['$tags', 5] },
size: {
width: { $trunc: { $multiply: [ { $divide: ['$size.width', '$size.height'] }, 350] } },
height: { $trunc: 350 }
},
style: {
$concat: [
'background-color: rgb(',
{ $toLower: { $arrayElemAt: [ '$pixels.rgb.r', 0 ] } }, ',',
{ $toLower: { $arrayElemAt: [ '$pixels.rgb.g', 0 ] } }, ',',
{ $toLower: { $arrayElemAt: [ '$pixels.rgb.b', 0 ] } }, ')'
]
},
owner: { $arrayElemAt: [ '$owner', 0 ] },
likes: { $in: [request.params.sessionId, '$likes'] },
createdAt: 1
}
}, {
$group: {
_id: "$_id",
image: { $first: '$image' },
href: { $first: '$href' },
tags: { $first: '$tags' },
size: { $first: '$size' },
style: { $first: '$style' },
owner: { $first: {
_id: '$owner._id',
name: '$owner.name',
avatar: { $concat: ['background-image:url(', '$owner.avatar', ')'] },
href: { $concat: [config.domain.href, '$owner.username', '/'] }
} },
likes: { $first: '$likes' },
createdAt: { $first: '$createdAt' }
}
}, {
$sort: { createdAt: -1 }
}
])
Он выполняется от 90-120ms, проблемный участок находится в match поле owner
Поле owner содержит ссылку на идентификатор пользователя из коллекции users
В схеме он определен следующим образом
owner: { type: mongoose.Schema.Types.ObjectId, ref: 'Users'},
Так же создан индекс для него
schema.index({ owner: 1 })
Если из условия убрать owner, запрос выполняется от 3-5ms, может быть кто то сталкивался с подобным и подскажет куда копать?