Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用mongoose在Mongodb中匹配对象数组中的键_Javascript_Mongodb_Typescript_Mongoose - Fatal编程技术网

Javascript 如何使用mongoose在Mongodb中匹配对象数组中的键

Javascript 如何使用mongoose在Mongodb中匹配对象数组中的键,javascript,mongodb,typescript,mongoose,Javascript,Mongodb,Typescript,Mongoose,一个文档包含一个对象数组,每个对象都包含一个键。我想在mongoose中找到与该键匹配的所有对象。 下面是示例模式: const TalentSchema = new mongoose.Schema({ name: String, dev_task: [ { development_training: { type: mongoose.Schema.Types.ObjectId, ref: 'Training

一个文档包含一个对象数组,每个对象都包含一个键。我想在mongoose中找到与该键匹配的所有对象。 下面是示例模式:

const TalentSchema = new mongoose.Schema({
name: String,
  dev_task: [
        {
          development_training: {
            type: mongoose.Schema.Types.ObjectId,
            ref: 'TrainingModule',
          },
          developlink: String,
        },
      ],  
})
我想将经过开发培训的文档与给定Id匹配。 我该怎么做

更新: 样本数据

[
  {
    "name": "name1",
    "dev_task": [
      {
        "development_training": 1,
        "developlink": ""
      },
      {
        "development_training": 2,
        "developlink": ""
      }
    ]
  },
  {
    "name": "name2",
    "dev_task": [
      {
        "development_training": 1,
        "developlink": ""
      }
    ]
  },
]
它应返回以下内容:-

[
  {
    "_id": ObjectId("5a934e000102030405000000"),
    "dev_task": [
      {
        "developlink": "",
        "development_training": 1
      }
    ],
    "name": "name1"
  },
  {
    "_id": ObjectId("5a934e000102030405000001"),
    "dev_task": [
      {
        "developlink": "",
        "development_training": 1
      }
    ],
    "name": "name2"
  }
]
如中所述,mongo使用点表示法

MongoDB使用点表示法访问数组的元素,并访问嵌入文档的字段

这正是我们想要的

因此,要访问您的文档,您需要通过以下方式执行
dev\u task.development\u training
查找查询:

db.collection.find({
“开发任务.开发培训”:1
})
范例

请注意,使用mongoose是相同的查询:

yourModel.findOne({“dev_task.development_training”:yourId})

你的意思是?是的,这正是我想要的。不客气,我也发布了一个答案,解释它,以防对其他用户有用。嘿,J.F,我有一个疑问。此查询返回至少有一个对象具有“dev_task.development_training”的所有对象:1还返回有两个对象具有不同dev.task.development_training的数组。请检查我刚刚更新的问题!