#node.js #mongoose
Вопрос:
У меня есть 2 схемы:
const SiteSchema = new mongoose.Schema(
{
placement: Number,
groupId: mongoose.SchemaTypes.ObjectId,
title: {
type: String,
required: true,
trim: true,
},
url: {
type: String,
required: true,
},
},
{ timestamps: true }
)
и
const GroupSchema = new mongoose.Schema(
{
placement: Number,
header: {
type: String,
required: true,
trim: true,
},
items: [Site.schema],
},
{ timestamps: true }
)
Я пытаюсь получить все группы с до 5 соответствующими сайтами на основе значения размещения сайтов, как это:
roup.find({ 'items.placement': { $lte: 5 } })
.skip(offset)
.limit(maxNumberOfResults)
.sort('placement')
.lean()
.then(groups => {res.send({ sites: groups}))
однако результат, который я получаю, — это все сайты в группе, независимо от их ценности размещения.
например: я ожидаю, что получу:
[
{
"_id": "60dd2c314d98940d90fe8861",
"placement": 0,
"createdAt": "some date",
"updatedAt": "some date",
"header": "group",
"items": [
{
"_id": "60dd2cb54d98940d90fefb2a",
"groupId": "60dd2c314d98940d90fe8861",
"placement": 1,
"title": "something",
"url": "some url",
"createdAt": "some date",
"updatedAt": "some date"
},
{
"_id": "60dd2cb54d98940d90fefb2d",
"groupId": "60dd2c314d98940d90fe8861",
"placement": 2,
},
{
"_id": "60dd2cb54d98940d90fefb2f",
"groupId": "60dd2c314d98940d90fe8861",
"placement": 3,
},
{
"_id": "60dd2cb54d98940d90fefb30",
"groupId": "60dd2c314d98940d90fe8861",
"placement": 4,
},{
"_id": "60dd2cb54d98940d90fefb30",
"groupId": "60dd2c314d98940d90fe8861",
"placement": 5,
},
]
но получение мест размещения 6 и далее, а также
***Если бы кто-нибудь также мог рассказать мне, как отсортировать массив вложенных документов в соответствии со значением размещения, я был бы очень признателен.
Ответ №1:
Попробуйте изменить items: [Site.schema]
на items: [SiteSchema],
Комментарии:
1. к сожалению, это не возымело никакого эффекта