通过对象数组中的值查找

时间:2019-02-16 19:48:56

标签: node.js mongodb mongoose

我无法查询特定部门中包含的所有个人资料。

我正在将nodejs与mongo和mongoose一起使用。下一个Profile模式的示例:

Profile: {
   "level": 1,
   "departments": [
    {
        "_id": "5c5f3bb4338fde6c60a684d4",
        "department": "5c106a324acd0571241323f2",
        "name": "Calidad"
    },
    {
        "_id": "5c5f3794eca3f14cd49e395e",
        "department": "5c106bad99142733446a44f0",
        "name": "Mantenimiento"
    }
]

这是我尝试过的查询:

Profile.find({ departments: [{ department: req.params.id }] })
  .then(profiles => res.json(profiles))
  .catch(err =>
    res.status(404).json({ nodepartmentfound: "No departments found" })
  );

我希望返回带有指定部门所有配置文件的tan数组。

1 个答案:

答案 0 :(得分:1)

尝试以下代码:

Profile.find({ "departments.department": req.params.id })
  .then(profiles => res.json(profiles))
  .catch(err =>
    res.status(404).json({ nodepartmentfound: "No departments found" })
  );

基本上,您要做的是查询嵌入式文档数组。使用点表示法足以解决您的问题。相关文档可以在here中找到。