невозможно найти поддокумент с помощью мангуста - PullRequest
0 голосов
/ 26 апреля 2020

Я хотел найти вложенный документ с id и вернуть вложенный документ, а не родительский документ, моя схема выглядит следующим образом:

var coursesSchema = new mongoose.Schema({
 coursename:{type:String}
});

var parentSchema = new mongoose.Schema({
 courses:[coursesSchema]
});

var Parent= mongoose.model('parent', parentSchema );
module.exports = Parent;

let data = Parent.courses.id(_id);

, как указано в документах, которые я пытался найти в поддокументе. при использовании .id выдает ошибку, говорящую о невозможности прочитать свойство 'id' из неопределенного,

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

let data = Parent['courses'].id(_id);

пожалуйста, помогите мне с этим, я не могу разобраться с этим?

Ответы [ 2 ]

0 голосов
/ 28 апреля 2020

Мы можем решить эту проблему, используя операции агрегации, как @KunalMukherjee указал в комментариях Вот быстрый пример для этого

0 голосов
/ 26 апреля 2020

Чтобы получить поддокумент, вам нужно сделать следующее:

  1. Искать документ
  2. Ссылка на свойство поддокумента

В В вашем случае вы определили модель. Исходя из этой модели, вам необходимо:

Parent.findOne({ _id: ObjectId("abcd12345678901234567890") }, function(err, doc) {
  let subDocument = doc.courses;
  ...
}

Причина, по которой вы получаете "неопределенную" ошибку, заключается в том, что в поддокументе courses нет поля с именем id. Он имеет только поле с именем coursename.

...