MongoDB - 文檔

1.文檔是什么?

文檔是MongoDB中的數(shù)據(jù)基本單元,它以BSON(類似JSON)格式存放在集合中。文檔類似于關(guān)系型數(shù)據(jù)庫中表的記錄。

每個文檔都有一個特殊的鍵"_id",它在文檔所處的集合中是唯一的。

2.文檔相關(guān)CURD

以下命令均以user集合為例

  • 寫入文檔
db.user.insert({ "name" : "tom", "age" : 12 })
db.user.save({ "name" : "tom", "age" : 12 })
  • 查詢文檔(更多查詢方式見文檔查詢這一篇,這里不一一展開)
db.user.find()
  • 更新文檔

save() 更新指定_id的文檔

db.user.save({"name":"tom","_id":ObjectId("5ae2983e9e56c4bf8d07e97f")})

update() 按條件更新文檔(更多文檔修改相關(guān)內(nèi)容見文檔修改這一篇)

# 語法
db.collection_name.update(
    查詢條件,
    整個文檔或修改器,
    upsert: 不存在匹配的文檔時是否寫入新文檔,默認(rèn)false(可選)
    multi: 是否更新匹配的全部文檔,默認(rèn)false,此參數(shù)為true時第二個參數(shù)必須使用修改器(可選)
)
# 示例
db.user.update({"name":"tom"},{"name":"jack","age":12,"sex":"男"})
db.user.update({"name":"tom"},{"name":"jack","age":12,"sex":"男"},true)
db.user.update({"name":"tom"},{$set:{"name":"jack","age":12,"sex":"男"}},true,true,WriteConcern.SAFE)
db.user.update({"name":"tom"},{$set:{"name":"jack","age":12,"sex":"男"}},{multi:true})
  • 刪除文檔
# 語法
db.collection_name.remove(
    查詢條件,
    justOne: 匹配到多個文檔時是否只刪除一個文檔,默認(rèn)false  (可選)
    writeConcern: 異常級別(可選)
)
# 示例
# 刪除指定_id的文檔
db.user.remove({"_id":ObjectId("5ae2983e9e56c4bf8d07e97f")}
# 刪除指定屬性的文檔,匹配多個文檔時只刪除一個文檔
db.user.remove({"name":"tom"},true)
# 刪除指定屬性的文檔,匹配多個文檔時只刪除一個文檔,并指定寫操作的異常級別
db.user.remove({"name":"tom"},true,WriteConcern.NORMAL)
  • 更新或刪除并返回文檔
# 語法
db.collection.findAndModify({
    query: <document>,  # 查詢條件
    sort: <document>,  # 排序,只會更新會刪除匹配到的第一個文檔,如{"age":-1}表示按年齡倒序,{"age":1}表示按年齡正序
    remove: <boolean>,  # 是否刪除,不能與update參數(shù)同時存在
    update: <document>,  # 整個文檔或修改器,不能與remove參數(shù)同時存在
    new: <boolean>,  # 是否返回更新后的文檔,默認(rèn)為false,僅與update配合使用
    fields: <document>,
    upsert: <boolean>,  # 不存在匹配的文檔時是否寫入新文檔,默認(rèn)false
    bypassDocumentValidation: <boolean>,
    writeConcern: <document>,
    collation: <document>,
    arrayFilters: [ <filterdocument1>, ... ]
});
# 示例
db.user.findAndModify({query:{"name":"tom"},update:{"name":"tom","age":13},sort:{"age":-1},new:true})
db.user.findAndModify({query:{"name":"tom"},remove:true})
  • 查詢滿足條件的文檔數(shù)量
db.user.count({"name":"jack"})

5.update修改器

6.聚合

原生聚合運算
聚合管道

7.寫操作異常級別

  • WriteConcern.NONE 無異常拋出
  • WriteConcern.NORMAL 僅拋出網(wǎng)絡(luò)錯誤異常,沒有服務(wù)器錯誤異常(默認(rèn))
  • WriteConcern.SAFE 拋出網(wǎng)絡(luò)錯誤異常、服務(wù)器錯誤異常;并等待服務(wù)器完成寫操作
  • WriteConcern.MAJORITY 拋出網(wǎng)絡(luò)錯誤異常、服務(wù)器錯誤異常;并等待一個主服務(wù)器完成寫操作
  • WriteConcern.FSYNC_SAFE 拋出網(wǎng)絡(luò)錯誤異常、服務(wù)器錯誤異常;并等待服務(wù)器將寫操作刷新到磁盤
  • WriteConcern.JOURNAL_SAFE 拋出網(wǎng)絡(luò)錯誤異常、服務(wù)器錯誤異常;并等待服務(wù)器將寫操作提交到磁盤的日志文件
  • WriteConcern.REPLICAS_SAFE 拋出網(wǎng)絡(luò)錯誤異常、服務(wù)器錯誤異常;并等待至少2臺服務(wù)器完成寫操作`
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,537評論 19 139
  • 簡介 NoSQL : 全名為Not Only SQL, 指的是非關(guān)系型的數(shù)據(jù)庫 隨著訪問量上升, 網(wǎng)站的數(shù)據(jù)庫性能...
    奮斗的老王閱讀 3,136評論 4 47
  • MongoDB文檔 MongoDB 概念解析 不管我們學(xué)習(xí)什么數(shù)據(jù)庫都應(yīng)該學(xué)習(xí)其中的基礎(chǔ)概念,在mongodb中基...
    birdflying閱讀 2,066評論 0 27
  • 我現(xiàn)在就只想能有個好身體,存錢買把吉它,買個新手機,有點閑錢買書,上網(wǎng)。不要覺得我是個很會忍受孤獨的人。其實我也害...
    敢己閱讀 369評論 0 1
  • 終于是回家了啊 高鐵上有些吵 但并不無聊 從來不覺得坐在車上會無聊, 除了地鐵吧,什么都看不見 下一站,無錫 感嘆...
    Cheryl_ak717閱讀 162評論 0 0

友情鏈接更多精彩內(nèi)容