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

时间:2018-03-16 09:59:41

标签: 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")
}

如果我尝试更改类别字段,例如:

  • document.category = ''
  • document.category = null
  • document.category = undefined

我收到以下错误:

  

施放toObjectId失败...

我需要将"category"字段取消设置为nullempty,甚至删除它。 怎么做?

3 个答案:

答案 0 :(得分:3)

尝试1文档

x

unsetting

答案 1 :(得分:0)

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

一种解决方案是为类别字段生成24个字符的有效ObjectId。 其他方法是将category设置为简单String而不是ObjectId

答案 2 :(得分:0)

使用下面的行      document.category = new MongoDB \ BSON \ ObjectID('');