MongoDB - 文档

1.文档是什么?

文档是MongoDB中的数据基本单元,它以BSON(类似JSON)格式存放在集合中。文档类似于关系型数据库中表的记录。

每个文档都有一个特殊的键"_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() 按条件更新文档(更多文档修改相关内容见文档修改这一篇)

# 语法
db.collection_name.update(
    查询条件,
    整个文档或修改器,
    upsert: 不存在匹配的文档时是否写入新文档,默认false(可选)
    multi: 是否更新匹配的全部文档,默认false,此参数为true时第二个参数必须使用修改器(可选)
)
# 示例
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参数同时存在
    update: <document>,  # 整个文档或修改器,不能与remove参数同时存在
    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})
  • 查询满足条件的文档数量
db.user.count({"name":"jack"})

5.update修改器

6.聚合

原生聚合运算
聚合管道

7.写操作异常级别

  • WriteConcern.NONE 无异常抛出
  • WriteConcern.NORMAL 仅抛出网络错误异常,没有服务器错误异常(默认)
  • WriteConcern.SAFE 抛出网络错误异常、服务器错误异常;并等待服务器完成写操作
  • WriteConcern.MAJORITY 抛出网络错误异常、服务器错误异常;并等待一个主服务器完成写操作
  • WriteConcern.FSYNC_SAFE 抛出网络错误异常、服务器错误异常;并等待服务器将写操作刷新到磁盘
  • WriteConcern.JOURNAL_SAFE 抛出网络错误异常、服务器错误异常;并等待服务器将写操作提交到磁盘的日志文件
  • WriteConcern.REPLICAS_SAFE 抛出网络错误异常、服务器错误异常;并等待至少2台服务器完成写操作`
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,458评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,030评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,879评论 0 358
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,278评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,296评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,019评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,633评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,541评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,068评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,181评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,318评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,991评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,670评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,183评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,302评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,655评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,327评论 2 358

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,678评论 18 139
  • 简介 NoSQL : 全名为Not Only SQL, 指的是非关系型的数据库 随着访问量上升, 网站的数据库性能...
    奋斗的老王阅读 3,047评论 4 47
  • MongoDB文档 MongoDB 概念解析 不管我们学习什么数据库都应该学习其中的基础概念,在mongodb中基...
    birdflying阅读 1,993评论 0 27
  • 我现在就只想能有个好身体,存钱买把吉它,买个新手机,有点闲钱买书,上网。不要觉得我是个很会忍受孤独的人。其实我也害...
    敢己阅读 255评论 0 1
  • 终于是回家了啊 高铁上有些吵 但并不无聊 从来不觉得坐在车上会无聊, 除了地铁吧,什么都看不见 下一站,无锡 感叹...
    Cheryl_ak717阅读 128评论 0 0