程序问答   发布时间:2022-05-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何从 MongoDB 文档中删除具有指定值的字段?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何从 MongoDB 文档中删除具有指定值的字段??

开发过程中遇到如何从 MongoDB 文档中删除具有指定值的字段?的问题如何解决?下面主要结合日常开发的经验,给出你关于如何从 MongoDB 文档中删除具有指定值的字段?的解决方法建议,希望对你解决如何从 MongoDB 文档中删除具有指定值的字段?有所启发或帮助;

这是 mongo DB 中的给定文档,如下所示

{

"emailID": "xxx.gmail","user_devices": [],"devices": [{
    "created_time": 1607153351,"token": 123
},{
    "created_time": 1807153371,"token": 1345
}]

}

在这里我想删除设备内部的字段,即 "created_time": '',"token": '1345' 这里令牌值是已知的,因此需要删除“created_time”和“token”,其中输出类似于

{

"emailID": "xxx.gmail","token": 123
}]

}

我尝试了如下未设置的代码

var myquery = { 'emailID': emailID,'devices.token':1345};
        var newvalues = { $unset:{
        'devices.created_time':'','devices.token':1345
        } };

and used 

updateOne(myquery,newvalues,function(err,res))

但它不起作用。谁能告诉如何删除这个指定的字段。提前致谢。

解决方法

由于要删除的对象在数组中,所以必须这样使用$pull

db.collection.update({
  "emailid": "xxx.gmail"
},{
  "$pull": {
    "devices": {
      "token": 123
    }
  }
})

在此查询中,您告诉 mongo:“删除 -using $pull- 数组 devices 中的一个字段,其中 token123”。

示例here

编辑:

此外,如果您只想将一个字段删除到数组中的 objec 而不是对象本身,您可以使用 $[<identifier>] 进行过滤,然后使用 $unset 像这样:

db.collection.update({
  "emailid": "xxx.gmail"
},{
  "$unset": {
    "devices.$[elem].created_time": ""
  }
},{
  "arrayFilters": [
    {
      "elem.token": 123
    }
  ]
})

在此查询中,使用 arrayFilters 您只能在 $unsettoken 的对象中123。如果需要,您也可以使用 created_time 进行过滤。

示例here

大佬总结

以上是大佬教程为你收集整理的如何从 MongoDB 文档中删除具有指定值的字段?全部内容,希望文章能够帮你解决如何从 MongoDB 文档中删除具有指定值的字段?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:如何从