首页 > 解决方案 > 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 是否双向工作?我有一种感觉,这不是我应该在这个查询中使用的。

标签: node.jsdatabasemongodbexpressmongoose

解决方案


根据mongo文档,您可以查询如下

db.entity.find({ "organizations" : { $elemMatch: { "id" : ObjectId("ididididididid") } }}).pretty();

参考: https ://docs.mongodb.com/manual/tutorial/query-array-of-documents/


推荐阅读