如何在猫鼬中查询关系/嵌套模式?

时间:2020-08-12 14:11:41

标签: javascript mongodb mongoose

我有2个Mongoose(5.9.25)模式模型。 首先,使用GroupSchema模型:

const GroupSchema = new mongoose.Schema({
    name: {
        type: String,
        required: true
    },
    admins: {
        type: String,
        default: ""
    },
    blocked: {
        type: String,
        default: ""
    },
    createdBy: {
        type: mongoose.Types.ObjectId,
        required: true,
        ref: 'user',
    },
    members: {
        type: String,
        default: ""
    },
    privacy: {
        type: String,
        required: true,
        enum: ['public', 'private', 'deleted'],
    },

})

第二,GroupPostSchema模型:

const GroupPostSchema = new mongoose.Schema({
    user: {
        type: mongoose.Types.ObjectId,
        required: true,
        ref: 'user',
    },
    text: {
        type: String,
        required: true
    },
    group: {
        type: mongoose.Types.ObjectId,
        required: true,
        ref: 'group',
    },
    image: {
        type: String
    }
})

我正在尝试这样查询:

var search = {
    "group.privacy": "public"
}

GroupPostSchema.find(search).exec((err, data) => {
    // something
})

但是它返回的空数组[]

我已阅读以下答案: Mongoose query for nested schema

但是我想保留GroupPostSchema.group作为对象而不是数组。

如何做到最简单的方法?

1 个答案:

答案 0 :(得分:0)

不使用exec进行检查,如下所示:

const users = await User.find({'group.privacy': 'public'});