MongoDB基础操作三(文档基础操作CRUD)

创建数据库

> use userinfo

数据库删除:

db.dropDatabase()
> show dbs      # 显示当前系统中的所有数据库
> use userinfo  # 转到userinfo数据库
switched to db userinfo
> db.dropDatabase()
{"dropped":"userinfo","ok":1}
> show dbs

创建集合
语法:db.createCollection(name,options)
参数描述

name:创建的集合名称
options:是一个作为初始化的文档(可选)
> db.createCollection("userinfo") #无参数
{ "ok" : 1 }
> show collections
userinfo
system.indexes
> db.createCollection("zhongrun", { capped : 1, autoIndexId : 1, size : 6142800, max : 10000 } ) #带参数
{ "ok ": 1 }

参数描述:

capped:类型为 Boolean,如果为 true 则创建一个固定大小的集合,当其条目达到最大时可以自动覆盖以前的条目。在设置其为 true 时也要指定参数大小;
autoIndexId:类型为 Boolean,默认为 false,如果设置为 true,则会在 _id 字段上自动创建索引;
size:如果 capped 为 true 则需要指定,指定参数的最大值,单位为 byte;
max:指定最大的文档数。

在 Mongodb 中也可以不用创建集合,因为在创建文档的时候也会自动的创建集合。

删除集合:
基础语法结构:db.COLLECTION.drop()

> db.userinfo.drop()

注意:当您要删除指定的集合时,用您想要删除的集合名称替代 COLLECTION 即可。

文档插入:

> userdoc1=({"user_id":1,"name":"cloud","state":"active","actor":"user","e-mail":"test@qq.com","VM_num":2,"time":[{"date":"2020-02-12","hour":"10:53 PM"}] })
> userdoc2=({"user_id":2,"name":"testadmin","state":"active","actor":"admin","e-mail":"test@qq.com","VM_num":2,"time":[{"date":"2020-02-12","hour":"06:34 AM"}] })
> doc1=({"name":"peter","position":"teacher"})    #先定义文档

> use userinfo
switched to db userinfo
> db.zhongrun.insert(userdoc1)
WriteResult({"nInserted":1})
> db.zhongrun.insert(userdoc2)
WriteResult({"nInserted":1})
> db.zhongrun.insert(doc1)
WriteResult({"nInserted":1})

插入文档成功,当然也可以直接将文档的内容作为函数的参数直接替代 document。

文档更新:
db.COLLECTION_NAME.update(SELECTION_CRITERIA,UPDATED_DATA)
操作实例:

> db.zhongrun.update({"user_id":2,"e-mail":"test@qq.com"},{$set:{"e-mail":"group@qq.com"}})
WriteResult({"nMatched":1,"nUpserted":1,"nModified":1})
> db.zhongrun.find()

Explain:
将 user_id=2 的文档的 e-mail 改为 group@qq.com 第一个大括号内容标示查找条件,第二个大括号内容则表示更新后的数据 默认的 update 函数只对一个文档更新,如果想作用所有文档,则需要加入 multi:true

文档替换:

> db.zhongrun.save({"_id":ObjectId("53ea174ccb4c62646d9544f4"),"name":"Bob","position":"techer"})
WriteResult({"nMatched":1,"nUpserted":1,"nModified":1})

这里的 _id 对应的是要替换文档的 _id。跟 insert 差不多,但是 save 更好用。

文档删除:
基础语法结构:db.COLLECTION_NAME.remove(DELECTION_CRITERIA)
操作实例:

> db.zhongrun.remove({"name":"Bob"})
WriteResult({"nRemoved":1})

其实 remove 函数的参数跟 update 函数的第一个参数一样,相当于查找条件,注意,不要误删数据!建议类比RDBMS的逻辑删除来操作。

小节:

createCollection():创建集合
db.COLLECTION.drop():删除集合
db.COLLECTION_NAME.insert(document):插入文档
db.COLLECTION_NAME.update(SELECTION_CRITERIA,UPDATED_DATA):更新文档
db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA}):替换已存在的文档
db.COLLECTION_NAME.remove(DELECTION_CRITERIA):删除文档
MongoDB是一个面向文档的数据库,目前由10gen开发并维护,它的功能丰富,齐全,完全可以替代MySQL。在使用MongoDB做产品原型的过程中,我们总结了MonogDB的一些亮点:使用JSON风格语法,易于掌握和理解:MongoDB使用JSON的变种BSON作为内部存储的格式和语法。针对MongoDB操作都使用JSON风格语法,客户端提交或接收的数据都使用JSON形式来展现。相对于SQL来说,更加直观,容易理解和掌握。Schema-less,支持嵌入子文档MongoDB是一个Schema-free的文档数据库。一个数据库可以有多个Collection,每个Collection是Documents的集合。Collection和Document和传统数据库的Table和Row并不对等。无需事先定义Collection,随时可以创建。Collection中可以包含具有不同schema的文档记录。 这意味着,你上一条记录中的文档有3个属性,而下一条记录的文档可以有10个属性,属性的类型既可以是基本的数据类型(如数字、字符串、日期等),也可以是数组或者散列,甚至还可以是一个子文档(embed document)。这样,可以实现逆规范化(denormalizing)的数据模型,提高查询的速度。图1 MongoDB是一个Schema-free的文档数据库图2是一个例子,作品和评论可以设计为一个collection,评论作为子文档内嵌在art的comments属性中,评论的回复则作为comment子文档的子文档内嵌于replies属性。按照这种设计模式,只需要按照作品id检索一次,即可获得所有相关的信息了。在MongoDB中,不强调一定对数据进行Normalize ,很多场合都建议De-normalize,开发人员可以扔掉传统关系数据库各种范式的限制,不需要把所有的实体都映射为一个Collection,只需定义最顶级的class。MongoDB文档模型可以让我们很轻松就能将自己的Object映射到collection中实现存储。图2 MongoDB支持嵌入子文档简单易用的查询方式:MongoDB中的查询让人很舒适,没有SQL难记的语法,直接使用JSON,相当的直观。对不同的开发语言,你可以使用它最基本的数组或散列格式进行查询。配合附加的operator,MongoDB支持范围查询,正则表达式查询,对子文档内属性的查询,可以取代原来大多数任务的SQL查询。CRUD更加简单,支持in-place update:只要定义一个数组,然后传递给MongoDB的insert/update方法就可自动插入或更新;对于更新模式,MongoDB支持一个upsert选项,即:“如果记录存在那么更新,否则插入”。MongoDB的update方法还支持Modifier,通过Modifier可实现在服务端即时更新,省去客户端和服务端的通讯。这些modifer可以让MongoDB具有和Redis、Memcached等KV类似的功能:较之MySQL,MonoDB更加简单快速。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值