Сложный запрос mongoose - встроенный массив документов - PullRequest
0 голосов
/ 26 июня 2018

Я хочу выполнить запрос для получения всех «групповых» документов, которые имеют userId в массиве пользователей.

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

Что я делаю не так?

group.js

let mongoose = require('mongoose');

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

module.exports = mongoose.model('group', Group);

groupController.js

exports.getUserGroups = function (req, res) {
    Group.find({
        "users.userid": "req.user._id"
    }, function (err, groups) {
        if (err)
            res.send(err)
        res.json(groups);
    });
}

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Имена полей чувствительны к регистру, поэтому "users.userid" должно быть "users.userId" вместо:

Group.find({
    "users.userId": "req.user._id"
}, ...
0 голосов
/ 26 июня 2018

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

db.collection.find({
  "users.userId": {
    $in: [
      req.user._id
    ]
  }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...