猫鼬查询以检查搜索到的元素数组中的特定值

时间:2019-11-19 12:19:15

标签: node.js database mongodb express 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()

它起作用了,但是在express方法中不起作用,我做错了吗? $ in是否同时起作用?我觉得它不是我在此查询中应该使用的。

1 个答案:

答案 0 :(得分:0)

根据mongo文档,您可以按以下方式查询

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

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