系统学习MongoDB(三)document详解
提要:本章强化document概念及基础CURD
文档 document
MongoDB以BSON文档的形式存储数据记录,BSON是JSON的二进制表现形式,但是BSON支持的数据类型要多于JSON。
文档结构: { field1: value1, field2: value2, field3: value3, ... fieldN: valueN }
文档以 field-value对的形式组成,value可以是任何BSON支持的数据类型。可以是对象也可以是数组或者包含对象的数组,这种在Mongo中成为嵌入文档。如下 { _id: ObjectId("5099803df3f4948bd2f98391"), name: { first: "Alan", last: "Turing" }, birth: ISODate("2018-05-11T05:58:51.122Z"), death: ISODate("2022-05-11T05:58:51.122Z"), contribs: [ "Turing machine", "Turing test", "Turingery" ], views : 1250000 }
字段名限制字段名都是string类型_id 是保留的主键的关键字,它的value必须是全局唯一的。_id字段如果有子字段,字段名不能以$开头。字段名不能包含null字符服务器允许字段中包含.和$ (MongoDB 5.0开始支持)
文档限制 一条文档最大不可超过16MBson文档中的字段是有序的。查询的时候,如条件{a: 1, b: 1} =={a: 1, b: 1} 但是 {a: 1, b: 1} != {b: 1, a: 1} ,这可能导致查询引擎查询时重排序。
CURD操作
创建文档://单条插入语法 db.collection.insertOne( , //文档Bson { //可选参数 writeConcern: } ) //示例 商品products 集合中插入一条文档 db.products.insertOne( { item: "card", qty: 15 } ); //返回结果 { "acknowledged" : true, "insertedId" : ObjectId("56fc40f9d735c28df206d078") //插入文档未指定_id是系统自己生成唯一id并返回,建议使用系统生成的id } //多条插入语法 db.collection.insertMany( [ , , ... ], //此参数为要插入的文档数组 { //可选参数 writeConcern: , ordered: } ) //示例 db.products.insertMany( [ { item: "card", qty: 15 }, { item: "envelope", qty: 20 }, { item: "stamps" , qty: 30 } ] ); //返回结果 { "acknowledged" : true, "insertedIds" : [ ObjectId("562a94d381cb9f1cd6eb0e1a"), ObjectId("562a94d381cb9f1cd6eb0e1b"), ObjectId("562a94d381cb9f1cd6eb0e1c") ] }
查询文档//查询文档 db.collection.find(query, projection) // query 参数为查询条件 projection 可选参数,为指定返回结果包括哪些字段 //示例 查询商品集合中 item 是card的记录 db.products.find( { item: "card", } ) //返回结果 { item: "card", qty: 15 }
note:下章节详细讲解各种查询的写法和操作符的使用。
修改文档//语法 db.collection.updateOne( , //查询条件,写法与查询中的条件一直 , //要修改得字段 { //可选参数 upsert: , writeConcern: , collation: , arrayFilters: [ , ... ], hint: } //示例 将item是crad 的qty字段改为3 $set为操作符 db.products.updateOne( { "item" : "card" }, { $set: { "qty" : 3 } } );
删除文档//语法 db.collection.deleteOne( , //删除指定条件的文档 {//可选参数 writeConcern: , collation: , hint: // Available starting in MongoDB 4.4 } ) //示例 删除指定id的数据 db.products.deleteOne( { "_id" : ObjectId("562a94d381cb9f1cd6eb0e1a") } );
接下来的章节会详细讲解各种情况的查询和修改使用案例,力求最全。
妈我饿了那一碗热气腾腾的手擀面,筋道与鲜香扑面而来,氤氲的热气升腾,湿了我的心,模糊了我的双眼。快乐的暑假马上就要结束了,我一边为娃做手擀面,居然就想起了自己也曾为暑假而雀跃,为开学而紧张
夜读丨君子如兰,佳友如你作者丨渡兰君主播丨青瑶人这一生会遇到无数人,可拥有几个朋友,却总也数不清有些人,你不知道算不算朋友。看着酒肉朋友成群,却不知谁才是陪到最后的君。朋友不贵多,只贵知心,如果朋友有品质
八年,李易峰是时候说再见了钱钟书曾言天下哪有什么偶然,那不过是化了妆,带了面具的必然。种下什么因,就会结什么必然的果,不珍惜羽毛,最终只能自食恶果。在我的青春里,有一个陪伴我八年的男孩,他叫李易峰。从201
秋风秋月秋诗凉作者朴诗无华从春天到夏天眼见得满目青翠与花香渐次褪去百鸟争鸣与蝉嘶蛙叫也哑口无言仍不见外出人微笑归来却已知诸事反复不尽人意而阳光没有了热辣河道里冷冷清清一波一波的浪沫漫过躺平的草青
道法自然随笔致静虚,守静笃2022年9月15日晴做一个俗人很容易,活出真性情却需要勇气。从毕业到现在,我被不同的人教育,被不同的人洗脑,一会让我微笑,一会让我卑微,个个和我称兄道弟,人人要我服从社会,可到头
复旦女神陈果在岁月中,修养自己我自风情万种,与世无争。作者洞见eyla复旦女神陈果曾经说过,我们每一个人,都是一颗种子。种子埋进土壤,不代表就能开花。要想在春天的时候,看到花繁叶茂的美好景象。就需要在点滴的岁月
晚安永远不要怀疑努力奋斗的意义今日推荐阅读永远不要怀疑努力奋斗的意义谁的人生都有高低起伏,但人与人的差距在于,当一些人自暴自弃时,真正的强者能转变思维,破局而出。要相信,那些你努力奋斗的日子都有它的意义。时间用
超时空侦探邀你断案,一起破恐龙迷案曾经称霸地球的恐龙永远是人们好奇的焦点之一,但它们早已灭绝6600万年,要了解到它们并不容易。不过地质学家们就好像侦探一样,会从每一块恐龙化石中抽丝剥茧,侦破迷案。其中恐龙的形态食
韦布发布首张系外行星照片,找到另一颗地球的希望更大了据科普中国报道2022年9月2日凌晨,韦布空间望远镜(JamesWebbSpaceTelescope,以下简称韦布)拍摄的第一张系外行星图像被公布,如下图。这颗系外行星的编号为HI
欧冠20!安切洛蒂又赢了新赛季8战全胜,下半场的皇马惹不起北京时间9月15日0300,欧冠小组赛第2轮,巴尔韦德首开记录,阿森西奥补时阶段杀死比赛,最终皇马主场20击败RB莱比锡,取得开局2连胜。安切洛蒂神了,在当家前锋本泽马因伤缺阵的两
超近距离秒变百吋大屏,不止高亮超短焦,坚果O1S深度体验在寸土寸金的大城市,拥有一处属于自己的私人空间自然是再幸福不过的事了。尽管不少朋友住着空间有限的小户型房子,但每天辛苦下班后回到家里,点播一部影片,让自己瞬间处于完全放松的状态,品