首页 > 解决方案 > Mongoose 根据子文档参考值查找文档

问题描述

我正在尝试根据子文档参考来获取文档。

我努力了

Blog.find({"user.blocked" : false})

该查询不会提取任何文档结果。

这是我的架构

const BlogSchema = new mongoose.Schema({
    category: {type: String, trim: true},
    user: {type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true},
    title: {type: String},
    description: {type: String},
}, {timestamps: true});

const UserSchema = new mongoose.Schema({
    name: {type: String, required: true},
    blocked: Boolean,
}, {timestamps: true});

mongoose.model('User', UserSchema);
mongoose.model('Blog', BlogSchema);

标签: node.jsmongodbmongoose

解决方案


您将用户定义为参考,因此您无法查询其他集合的字段。这是与关系数据库的区别之一,您不能执行JOIN.

您的替代方法是使用$lookup运算符使用聚合而不是查询。你可以在这里查看


推荐阅读