node.js - 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);
解决方案
您将用户定义为参考,因此您无法查询其他集合的字段。这是与关系数据库的区别之一,您不能执行JOIN
.
您的替代方法是使用$lookup
运算符使用聚合而不是查询。你可以在这里查看
推荐阅读
- python - 来自 Geeks for Geeks 的堆排序算法的索引似乎有点偏离
- laravel - 如何修复:Carbon 无法转换为 int
- html - 空格在 HTML 语法中的位置还是首选项?
- kubectl - 需要 kubectl jsonpath 参数来获取由字符串索引的数组条目
- javascript - HTML textarea 值在运行时未从 js 获取
- python - JSON 转储更好的字典格式
- python - Oracle/SQL Server 表到文件 - 没有隐式数据转换
- reactjs - 如果有两个计数器组件要绑定到 Redux Store 中的两个属性,是否必须编写两次 reducer、mapStateToProps 等?
- node.js - MongoDB - 如何转换对象数组中的每个日期字段?
- openrefine - 具有重复值的 OpenRefine 拆分列