#node.js #mongodb #mongoose #mongodb-query
#node.js #mongodb #мангуст #mongodb-запрос
Вопрос:
У меня есть массив внутри документа, допустим, у пользователя есть followedBy
массив, из которого я хочу найти пользователя на основе идентификатора, а затем хочу получить только первые 3 элемента followedBy
.
На картинке вы можете видеть, что у меня есть коллекция пользователей, а затем внутри user у меня есть массив с именем as followedBy
.
Мне нужно сначала выполнить поиск пользователя на основе идентификатора, а затем получить первые 3 элемента массива в одном запросе, а не сначала получить пользователя и получить followedBy
массив, содержащий тысячи элементов внутри него, а затем применить к нему срез.
Ответ №1:
Согласно документам, которые вы можете использовать $slice
в проекции.
Итак, вам нужно сделать:
db.collection.find({
"_id": your_id
},
{
"followedBy": {
"$slice": 3
}
})
Проверьте этот пример.
Использование mongoose
точно такого же запроса:
YourModel.find({
"id": your_id
},
{
"followedBy": {
"$slice": 3
}
})
.then(result => {
// ...
}).catch(e => {})
Комментарии:
1. спасибо, это решило проблему, дайте мне знать, можем ли мы использовать здесь супер-разбивку на страницы, как мы делаем при извлечении нескольких записей, или у нас есть единственный способ применить с помощью slice? хотя slice также может работать. что вы предлагаете?