一、基本概念
mongodb有三个概念
- 数据库(database)数据库是一个仓库,在仓库中可以存放集合。
- 集合(collection)集合类似于数组,在集合中可以存放文档。
- 文档(document)文档数据库中的最小单位,我们存储和操作的内容都是文档。
就是说在mongodb中一条数据就是一个文档,多个文档组成集合,多个集合组成数据库。如下:
二、基本指令
1、安装robo 3t 作为数据库可视化工具,详情我就不说了
1、数据库操作
- show dbs 显示所有的数据库
-
use 数据库名
-
使用use时,如果数据库存在则会进入到相应的数据库,如果不存在,当对数据库执行插入文档的时候会自动创建
-
一旦进入数据库,则可以使用db来引用当前库
-
show db.collections 显示当前数据库的所有集合
-
db.createCollection()使用create时创建一个新的集合
-
db.<collectionname>.drop() 使用drop时删除集合
2、文档的操作
-
插入文档
1、db.<collectionname>.insert (文档) 可以向集合中添加一个或者多个文档,插入时每个文档会生成一个唯一的标识id.如果集合不存在则会自动创建。若插入的数据主键已经存在,则会抛 org.springframework.dao.DuplicateKeyException 异常,提示主键重复,不保存当前数
db.<collectionname>.insert ( <document> )
2、db.<collectionname>.save(文档)如果 _id 主键存在则更新数据,如果不存在就插入数据。该方法新版本中已废弃,可以使用 db.collection.replaceOne() 来代替。
db.collectionname.replaceOne( <document>, //匹配文档 <document> //需要更新的文档 )
3、db.collection.insertMany() 批量插入数据
db.collectionname.insertMany( [ <document 1> , <document 2>, ... ], { writeConcern: <document>, ordered: <boolean> } ) >>document:要写入的文档。 >>writeConcern:写入策略,默认为 1,即要求确认写操作,0 是不要求。 >>ordered:指定是否按顺序写入,默认 true,按顺序写入。
-
修改文档 db.<collectionname>.update ()
db.collectionname.update( <query>, <update>, { upsert: <boolean>, multi: <boolean>, writeConcern: <document> } ) >>query : update的查询条件,类似sql update查询内where后面的。 >>update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的 >>upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。 >>multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。 >>writeConcern :可选,抛出异常的级别。
-
删除文档 db.<collectionname>.remove(文档) 移除指定文档对象,移除后不可撤销
db.collection.remove( <query>, { justOne: <boolean>, writeConcern: <document> } ) >>query :(可选)删除的文档的条件。 >>justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。 >>writeConcern :(可选)抛出异常的级别。
-
查询文档 db.<collectionname>.find() pretty()以格式化的方式输出
db.collectionname.find(query, projection) >>query :可选,使用查询操作符指定查询条件 >>projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
原创文章,作者:carmelaweatherly,如若转载,请注明出处:https://blog.ytso.com/267342.html