首页 > 解决方案 > 无法使用赛普拉斯查询 MongoDB 的 ObjectId

问题描述

我正在尝试执行以下查询

db.getCollection('name').find({_id : ObjectId("hereGoesAnId")})

我正在使用 mongodb 模块并使用 cy.task 每次查询数据库。这工作正常。事实上,如果我将 id 更改为另一个要查询的属性,它会像一个魅力一样工作。问题是我只能通过这个 id 来识别任务,而 ObjectId 是给我带来问题的那个。

如果我尝试以这种方式发送查询:

const result = await.collection.find({_id: `ObjectId(${varName})`}).toArray()

结果为空,因为它将 ObjectId 解释为字符串并且没有找到任何内容。

但是,如果我这样做:

const result = await.collection.find({_id: ObjectId(`${varName}`)}).toArray()

我收到一条错误消息,提示“未定义 ObjectId ...

我是 mongo 的新手,我不确定是否有解决方法?

标签: javascriptmongodbcypress

解决方案


在您的代码顶部添加以下内容:

const { ObjectId } = require('mongodb');

推荐阅读