MongoDB如何删除文档内指定字段而不删除整个文档
解决方案
你使用的db.my_collection.remove()是MongoDB中用于删除完整文档的方法,只要匹配到符合筛选条件的文档就会将整条文档删除,因此无法实现仅删除指定字段的需求。
要实现删除文档内指定字段、保留其余内容的需求,需要使用update系列方法配合$unset操作符完成,$unset是MongoDB专门用于删除文档字段的操作符。
单字段删除操作示例(删除language字段)
因为你当前集合仅存储1个文档,可直接使用以下语句:
db.my_collection.updateOne( {}, // 筛选条件为空时默认匹配集合内所有文档 { $unset: { "language": "" } } // $unset后指定要删除的字段,字段对应的值可设为任意空值 )
如果想要避免误操作,也可以用文档唯一_id做精准筛选:
db.my_collection.updateOne( { "_id": ObjectId("61012ada8d2ccb252be87551") }, { $unset: { "language": "" } } )
多字段批量删除示例
如果需要同时删除多个字段,只需在$unset参数中添加对应的字段即可,比如同时删除language和gui-ipv6字段:
db.my_collection.updateOne( { "_id": ObjectId("61012ada8d2ccb252be87551") }, { $unset: { "language": "", "gui-ipv6": "" } } )
结果验证
执行完成后可执行查询语句确认字段是否成功删除:
db.my_collection.find()
执行后即可看到目标字段已被移除,其余字段内容均保留。
内容的提问来源于stack exchange,提问作者sngx
相关产品推荐
相关产品推荐

