Как получить документы, в которых в документе, на который ссылается ссылка, есть какое-то поле в mongoosejs

#node.js #mongodb #mongoose

#node.js #mongodb #мангуст

Вопрос:

Прежде всего, я совершенно новичок в MongoD, и я много искал, не нашел никакого решения или, возможно, я искал неправильно. Допустим, у меня есть следующие документы

 const personSchema = Schema({
  _id: Schema.Types.ObjectId,
  name: String,
  age: Number,
  stories: [{ type: Schema.Types.ObjectId, ref: 'Story' }]
});

const storySchema = Schema({
  author: { type: Schema.Types.ObjectId, ref: 'Person' },
  title: String,
  fans: [{ type: Schema.Types.ObjectId, ref: 'Person' }]
});
  

Я могу запросить таких людей с их историями

 const persons = await Person.find().populate('stories');
  

Мне нужно запросить людей, у которых есть истории от определенного автора

 const persons = await Person.find({"stories.author":"someobjectid"}).populate('stories');

// This didn't work*/
  

Возможно ли выполнить такой запрос или мне нужно изменить схему person

Ответ №1:

Если вы хотите найти что-либо по ObjectId, вам нужно использовать этот синтаксис:

 const persons = await Person.find({"stories.author":mongoose.Types.ObjectId(author_id)}).populate('stories');//<==== Replace author_id with your actual variable.