Javascript 如何将mongo objectId字段设置为null或空,甚至删除该字段?

Javascript 如何将mongo objectId字段设置为null或空,甚至删除该字段?,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我的模态: { "name":{type:String,required:true}, "category":{type:mongoose.Schema.Types.ObjectId,ref:"Category"} } 我使用此模式创建了一个文档,该文档如下所示: { "_id":ObjectId("5dsfkjh2r74dsjdhf3r4f"), "name":"demo 1", "category":ObjectId("5ae9dlkj32nds6n37cj23") }

我的模态:

{
  "name":{type:String,required:true},
  "category":{type:mongoose.Schema.Types.ObjectId,ref:"Category"}
}
我使用此模式创建了一个文档,该文档如下所示:

{
  "_id":ObjectId("5dsfkjh2r74dsjdhf3r4f"),
  "name":"demo 1",
  "category":ObjectId("5ae9dlkj32nds6n37cj23")
}
如果我尝试更改类别字段,例如:

  • document.category=''
  • document.category=null
  • document.category=未定义
我得到以下错误:

强制转换对象ID失败


我需要将
“category”
字段设置为
null
empty
甚至删除它怎么做?

ObjectId
应该是一个24长度的字符串,我猜您的
id
不是。这就是为什么mongo无法将其转换为有效的
ObjectId

一种解决方案是为类别字段生成24个字符的有效
ObjectId

另一种方法是将
category
设置为一个简单的
String
,而不是
ObjectId
ObjectId
应该是一个24长度的字符串,我想您的
id
不是。这就是为什么mongo无法将其转换为有效的
ObjectId

一种解决方案是为类别字段生成24个字符的有效
ObjectId

另一种方法是将
category
设置为一个简单的
String
,而不是
ObjectId

尝试
取消设置该文档

document.update({_id: "5dsfkjh2r74dsjdhf3r4f"}, {$unset: {category: 1 }});


尝试取消设置文档

document.update({_id: "5dsfkjh2r74dsjdhf3r4f"}, {$unset: {category: 1 }});

线下使用 document.category=new MongoDB\BSON\ObjectID(“”)

使用下线
document.category=new MongoDB\BSON\ObjectID(“”)

它不是原始id。它的示例用途。顺便说一句,我需要删除或取消设置对象id字段为null。它不是原始id。它的示例用途。顺便说一句,我需要删除或取消设置对象id字段为null。