1.文檔是什么鹦赎?
文檔是MongoDB中的數(shù)據(jù)基本單元,它以BSON(類似JSON)格式存放在集合中猾瘸。文檔類似于關系型數(shù)據(jù)庫中表的記錄界赔。
每個文檔都有一個特殊的鍵"_id",它在文檔所處的集合中是唯一的牵触。
2.文檔相關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() 按條件更新文檔(更多文檔修改相關內(nèi)容見文檔修改
這一篇)
# 語法
db.collection_name.update(
查詢條件,
整個文檔或修改器,
upsert: 不存在匹配的文檔時是否寫入新文檔,默認false(可選)
multi: 是否更新匹配的全部文檔揽思,默認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: 匹配到多個文檔時是否只刪除一個文檔,默認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>, # 是否返回更新后的文檔役首,默認為false尝丐,僅與update配合使用
fields: <document>,
upsert: <boolean>, # 不存在匹配的文檔時是否寫入新文檔,默認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)絡錯誤異常衡奥,沒有服務器錯誤異常(默認)
- WriteConcern.SAFE 拋出網(wǎng)絡錯誤異常爹袁、服務器錯誤異常;并等待服務器完成寫操作
- WriteConcern.MAJORITY 拋出網(wǎng)絡錯誤異常矮固、服務器錯誤異常失息;并等待一個主服務器完成寫操作
- WriteConcern.FSYNC_SAFE 拋出網(wǎng)絡錯誤異常、服務器錯誤異常档址;并等待服務器將寫操作刷新到磁盤
- WriteConcern.JOURNAL_SAFE 拋出網(wǎng)絡錯誤異常盹兢、服務器錯誤異常;并等待服務器將寫操作提交到磁盤的日志文件
- WriteConcern.REPLICAS_SAFE 拋出網(wǎng)絡錯誤異常守伸、服務器錯誤異常绎秒;并等待至少2臺服務器完成寫操作`