【发布时间】:2021-09-18 23:09:38
【问题描述】:
我试图在我的查询中使用 OR 条件,但我不知道为什么它不工作,因为我在 mongodb 中知道使用 OR 条件我们必须这样写 $or
当我将自己的自定义 id 设为 projectId 时,我知道甚至 mongodb 也会创建自己的 id 为 _id
我的查询如下所示
const getProjectById = async (req, res) => {
const { id } = req.params;
let task = await Project.findOne({$or:{ projectId: id,_id:id}},
}).populate("assignee");
};
但它不工作
因为我试图通过 _id 和我的自定义 ID 获取数据,即 projectId
所以这是我的相同数据
{
"_id": "6145b0c7331a5a4634640f27",
"projectId": "b0jyt9gvktpl6936",
"projectName": "Gravity",
"projectTag": [],
"projectDescription": "Testing",
"taskStatus": "notStarted",
"assignee": null,
"createdAt": "2021-09-18T09:26:31.801Z",
"updatedAt": "2021-09-18T09:26:31.801Z",
"__v": 0
}
【问题讨论】:
-
您必须给我们一份样本文件,我们无法知道您的数据库中的_id 或projectId 是什么类型,以及驱动程序上的id 变量是什么类型/可能的类型。如果我们假设 _id 是数据库中的 ObjectId,那么您的代码可以工作,那么 projectId 也应该是数据库中的 ObjectId,并且您应该在这两个 ObjectId 函数中添加。如果不是这种情况,那么您必须检查 id 的类型并决定要做什么。
-
嗨@Takis_ 我已经从我的数据库中添加了示例文档
标签: node.js mongodb mongoose mongodb-query