【发布时间】:2022-01-18 12:21:01
【问题描述】:
我想从我的数据库中删除以下文档:
{
_id: 'EXISTING_ID'
}
如您所见,_id 被定义为字符串,而不是ObjectId。这使得删除变得困难,因为我不能使用以下代码(利用 node.js 的本机 MongoDB 驱动程序):
export const deleteDocumentWithId = (id: string) => {
return MongoClient.connect(dbUrl, (err, db) => {
if (err) {
throw err;
}
const dbo = db.db("my-db");
dbo.collection("my-collection").deleteOne({ _id: id }, (err, obj) => {
if (err) {
throw err;
}
db.close();
});
});
};
deleteDocumentWithId("EXISTING_ID");
在a related question of mine 中,用户评论将_id 定义为字符串并链接到this part of the documentation。但是,我认为InferIdType 在这里没有帮助,因为它只产生传入类型的_id 类型:
import {InferIdType} from "mongodb";
type obj = {
_id: string;
};
const foo: InferIdType<obj> = undefined; // foo is of type string
如何在此处将_id 定义为字符串类型?
【问题讨论】:
-
db.collection.deleteOne( { _id: 'EXISTING_ID' } )-mongoshell 中的这个命令会从集合中删除文档(您已发布)。 -
感谢您的评论!但是,这并没有多大帮助,因为我的用例必须使用 node.js。
-
我看到您正在指定
id类型的id函数参数ObjectId- 它不是您想要的string类型吗? -
复制粘贴错误。对不起。我编辑了问题。
-
我回答了最初的问题。我很欣赏它一定会令人困惑,甚至可能令人沮丧,但实际上没有必要增加不必要的问题。请尊重针对重复的 SO 政策并删除此政策。尝试从更简单的示例中学习 Mongo+Typescript,例如从docs.mongodb.com/drivers/node/current/fundamentals/typescript开始了解基本概念。
标签: node.js database mongodb documentation uniqueidentifier