Как вернуть все документы, которые содержат отношения определенного идентификатора в пн goose? - PullRequest
0 голосов
/ 11 марта 2020

Я хочу найти и вернуть все «игры», основываясь на том, существует ли связь в массиве «получателей платежей» с использованием mon goose и Node.js.

. Вот схема:

const playSchema = new Schema({
   streamer: { type: mongoose.Schema.Types.ObjectId, ref: 'User' },
   song: { type: mongoose.Schema.Types.ObjectId, ref: 'Song' },
   revenue: { type: Number },
   createdAt: { type: Date },
   payees: [ { type: mongoose.Schema.Types.ObjectId, ref: 'User' } ]
});

И вот что я пытаюсь сделать (просто пример):

Play.aggregate([{ $match: { payees: { req.user.id } } }]);

1 Ответ

1 голос
/ 11 марта 2020

Вы можете использовать оператор $ elemMatch .

Оператор $ elemMatch сопоставляет документы, содержащие поле массива, по крайней мере с одним элементом, который соответствует всем указанным критериям запроса.

Детская площадка

Пример маршрута:

router.get("/plays", async (req, res) => {
  const userId = req.user.id;

  try {
    let docs = await Play.find({
      payees: {
        $elemMatch: {
          $eq: userId
        }
      }
    });

    res.send(docs);
  } catch (err) {
    console.log(err);
    res.status(500).send("Something went wrong");
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...