复杂查询猫鼬-嵌入式文档数组

时间:2018-06-26 16:47:07

标签: mongodb mongoose

我想执行一个查询,以获取在该用户数组中具有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 :(得分:0)

您可以尝试使用$in运算符

db.collection.find({
  "users.userId": {
    $in: [
      req.user._id
    ]
  }
})

答案 1 :(得分:0)

字段名称区分大小写,因此"users.userid"应该为"users.userId"

Group.find({
    "users.userId": "req.user._id"
}, ...