Просто поля, которые были указаны для возврата.

ел бы знать, как установить проекцию для сопоставленного массива объектов из запроса Mongoose.

Например, если у меня есть модель Mongoose, которая выглядит примерно так:

var User = new Schema({
  name: String,
  children: [Child]
});

var Child = new Schema({
  name: String,
  height: Number,
  age: Number,
  secret: Number
});

Другими словами, пример объекта JSON, который может быть получен из этой модели:

User: {
  name: 'abc',
  children: [
    {
      name: 'def',
      height: 123,
      age: 7,
      secret: 2
    },
    {
      name: 'ghi',
      height: 456,
      age: 9,
      secret: 3
    }
  ]
}

Как видите, модель содержит свойствоchildren это массивChild объекты.

Если я совпаду толькоUser которые содержат элемент вchildren что имеет свойствоname: 'def':

Users.find({
  children.name: 'def'
})

Затем я могу установить проекцию, чтобы выбрать свойства (такие какname), а также свойства сопоставленного объекта с использованием позиционного оператора ($):

.select({
  name: 1,
  children.$: 1
}

Проблема в том, что с этой проекциейchildren.$ всегда вернет весьChild объект, включая свойства, которые я, возможно, не хочу запрашивать, такие какsecret.

{
  name: 'abc',
  children: [
    {
      name: 'def',
      height: 123,
      age: 7,
      secret: 2
    }
  ]
}

В идеале я хотел бы иметь возможность выбрать определенные свойства изchild объект, полученный через$ похоже на то, какname был выбран из родительского объектаUser, но я не могу найти способ сделать это.

Один из способов выбрать одно свойство - использовать форматchildren.$.age но это можно использовать только для выбора 1 свойства, так как многократное выполнение этого действия приводит к ошибке, поскольку вы не можете использовать$ оператор несколько раз.

.select({
  name: 1,

  // and now select the height and age
  // but only of the child that matches name = 'def'
  // WITHOUT returning the entire object (exclude name and secret)
  children.$.age,
  children.$.height // error
})

Возможен ли выбор проекции для объекта, полученного позиционным оператором в Mongoose?

Ответы на вопрос(0)

Ваш ответ на вопрос