у меня есть этот MongoDB Извещение Модель:Mongoose: Часть массива
- Пользователь: Монго ID
- Создано: Дата
- Содержание: {}
- Подписки: [{пользователя: Монго Id, чтения: Boolean}]
Использование Mongoose в NodeJS создать запрос, вернуть все документы, где мой пользователь находится внутри массива подписок.
Notification
.find({subscriptions:{$elemMatch: {user: req.user}}})
.sort('-created')
.exec(function (err, notifications) {
if (err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.jsonp(notifications);
}
});
Этот запрос работает, и возвращает документы, которые я хотел ... Но я не хочу, именно это ... Этот код возвращается в документы возвращаются, все подписки массив, в том числе других пользователей , Если в массиве подписки есть 10.000 пользователей, все пользователи будут возвращены во всех документах.
Как извлечь часть массива? Я хочу, чтобы только мой пользователь был возвращен внутри массива подписок. Почему? по соображениям безопасности и производительности.
Я попробовал этот запрос:
.find({subscriptions:{$elemMatch: {user: req.user}}}, {'subscriptions.$': 1})
Этот запрос возвращает только один пользователь в массиве подписки (мой пользователь). Но ... Не возвращено ни одного поля больше, кроме массива подписок ...
Любое предложение?
Ok, работает !! Спасибо! –