首页 > 数据库技术 > 详细

MongoDB查询或修改内嵌文档

时间:2021-08-15 11:47:40      阅读:14      评论:0      收藏:0      [点我收藏+]

作为非关系型数据库中的佼佼者,MongoDB一大优势在于能够在一条文档中存储对象类型的数据,适当增加冗余来让数据库更好用。文档中一个对象类型的字段在MongoDB中被称为内嵌文档(Embedded)

查询内嵌文档

如果要通过内嵌文档来对文档进行查询, 此时属性名必须使用引号

示例:

  • 在test库中,存在一个col集合,集合中数据如下
    技术分享图片
    要求: 查询hobby中, movies包含 超脱 的文档, 查询代码如下:
db.col.find({"hobby.movies":"超脱"}).pretty()

查询结果
技术分享图片

修改内嵌文档

向内嵌文档添加值

向内嵌文档添加值需要使用到 一个数组更新操作符
$push: 用于向数组中追加值

示例: 环境同上, 向内嵌文档movies中添加 平凡的世界, 代码如下:

	db.col.update({name:"龙猫不热"},{$push:{"hobby.movies":"平凡的世界"}})

返回结果
return: WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

再次查询
技术分享图片

注意: 现在movies中已经有了平凡的世界这个值了, 现在如果我们再运行一遍, 那么会在后面继续重复添加
技术分享图片

如果我们需要让movies中的值不重复, 那么需要使用到一个新的操作符
$addToSet: 向数组中添加一个新元素, 如果数组中已经存在了该元素, 则不会添加

修改代码:
db.col.update({name:"龙猫不热"},{$addToSet:{"hobby.movies":"平凡的世界"}})
运行后显示修改为0
技术分享图片
数组中也没有再添加一遍平凡的世界
技术分享图片

删除内嵌文档中指定的值

使用操作符 $pull
$pull: 数组中符合条件的值将被删除
> db.col.update({name:"龙猫不热"},{$pull:{"hobby.movies":"平凡的世界"}})))))

技术分享图片
运行代码后可以看出movies中值为平凡的世界的数据已经被删除掉了

MongoDB查询或修改内嵌文档

原文:https://www.cnblogs.com/long-mao-bu-re/p/15142480.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!