Запрос встроенного документа в mongoDB - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь запросить документ Group , в котором есть Users вложенных документов.

Но я хочу только вложенные документы, принадлежащие пользователю,

но я также получаю данные других пользователей.

Посмотрите на результат запроса, поле UserStatus, только один из них принадлежит пользователю.

Результат запроса -

[
  {
    "_id": "5b1bcc12d5cdbf2cf78f2133",
    "name": "First group ever",
    "users": [
      {
        userId: 1,
        "userStatus": "I"
      },
      {
        userId: 2,
        "userStatus": "I"
      }
    ]
  }
]

Group.js -

const GroupSchema = mongoose.Schema({
    name: {
        type: String,
        required: true
    },
    users: [{
        userId: {
            type: mongoose.SchemaTypes.ObjectId,
            ref: 'users',
            required: true
        },
        userStatus: {
            type: String,
            required: true
        }
    }]
})  

Запрос -

Group.find({
    "users": {
          $elemMatch: {
                userId: req.params.id, 
                $or: [{
                     userStatus: "I"
                }, {
                     userStatus: "A"
                }]
          }
        }
     }, "_id name users.userStatus",
     function (err, groups) {
        if (err)
            res.send(err)
        res.json(groups);
});
...