Пн goose. js: Найти всех пользователей, которым понравился пост кошки - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть две модели схемы.

const catSchema = new mongoose.Schema({
  name: 'string',
  likes: [
    {
      type: mongoose.Schema.Types.ObjectId, 
      ref: 'User',
      require: true
    }
  ],
});

и

const userSchema = new mongoose.Schema({
  email: {
    type: String,
    required: true,
    unique: true,
  },
});

Допустим, в коллекции Cat есть 10 документов Cat. И одному пользователю понравились два документа Cat. Я хочу найти два списка кошек, которые понравились пользователю через модель Cat.

1 Ответ

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

Вы можете использовать запрос $in из MongoDB для достижения этой цели. Подробная информация здесь: https://docs.mongodb.com/manual/reference/operator/query/in/

Из документов: Оператор $ in выбирает документы, в которых значение поля равно любому значению в указанном массиве.

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


const Cat = require('./models/Cat');
Cat.find({ likes : { $in : [user] }}).exec((cats) => {
  console.log(cats);
});

// user in this case should be the user document
// the query checks if the user is included in the 'likes' arrady

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...