MongoDB查詢或修改內嵌文檔


作為非關系型數據庫中的佼佼者,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中值為平凡的世界的數據已經被刪除掉了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM