node.js - Mongoose 查询以检查搜索元素数组中的特定值
问题描述
我有这样的架构:
var EntitySchema = new Schema({
name : {type: String, default: null},
organizations : [{
id: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Organization'
}}]
});
我有一个组织 ID,如何查询 Entity.find({}) 并在其组织数组中找到具有此 ID 的实体?
我在 mongo shell 中使用了这个
db.entity.find({"organizations.id": { $in: [ObjectId("ididididididid")]}}).pretty()
并且它有效,但它在快速方法中不起作用,我做错了什么吗?$in 是否双向工作?我有一种感觉,这不是我应该在这个查询中使用的。
解决方案
根据mongo文档,您可以查询如下
db.entity.find({ "organizations" : { $elemMatch: { "id" : ObjectId("ididididididid") } }}).pretty();
参考: https ://docs.mongodb.com/manual/tutorial/query-array-of-documents/
推荐阅读
- python - 列表理解并不能消除重复
- python - Windows - 有效地将大量数据打印到终端
- html - R函数到HTML
- kubernetes - Baremetal 中的 Kubernetes Cert-manager 问题:等待 HTTP-01 质询传播:错误的状态代码“403”,预期为“200”
- reactjs - 使用钩子将状态从一个组件传递到另一个(不是子组件)
- regex - 带有正则表达式的版本控制模板以提取 github 标记
- javascript - 当我们使用暂存标志(--staging)执行“npm build”时,如何在应用程序中创建“NON PRODUCTION”横幅?
- javascript - Redux-persist 即使在注销后也会继续存储旧数据
- reactjs - 使用带有 mount() 的 Typescript 问题反应单元测试 Jest
- csv - 在 PyCharm 中对齐 CSV 列