фильтр массива поддокументов с мангустом с помощью функции find()

#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. к сожалению, это не возымело никакого эффекта