目录
前言
基本概念
数据库
查看所有的数据库
连接到一个指定的数据库
删除数据库(慎用!!!)
集合
创建集合
查看集合
删除集合
文档
插入文档
更新文档
删除文档
查询文档
limit与skip方法
文档排序
总结
前言
Mongodb是非常好用的NoSQL数据库,前篇详细介绍MongoDB的安装步骤,本篇通过思维导图的方式详细介绍MongoDB常用操作,助你更灵活的使用它。
基本概念
在mongodb中基本的概念是文档、集合、数据库,下表帮助你更加容易理解Mongo中的一些概念:
SQL术语/概念 | MongoDB术语/概念 | 解释/说明 |
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 数据记录行/文档 |
column | field | 数据字段/域 |
index | index | 索引 |
table joins | 表连接,MongoDB不支持 | |
primary key | primary key | 主键,MongoDB自动将_id字段设置为主键 |
小贴士:一个mongodb实例可以创建多个数据库、一个数据库可以创建多个集合、一个集合可以包括多个文档。
数据库
一个mongodb中可以建立多个数据库,每一个都有自己的集合和权限,不同的数据库也放置在不同的文件中。
找到mongodb bin目录,执行./mongo 进入
查看所有的数据库
show dbs
连接到一个指定的数据库
use local
小贴士:有test数据库则切换到此数据库,没有则创建。
删除数据库(慎用!!!)
db.dropDatabase()
小贴士:删除时,先要切换到对应的数据库,在执行删除。
数据库也通过名字来标识。在用UTF-8字符串命名时,要注意以下几点:
(1)不能是空字符串("")。
(2)不得含有' '(空格)、.、$、/、\和\0 (空字符)。
(3)应全部小写。
(4)最多64字节。
集合
集合相当于关系数据库中的表,一个数据库可以创建多个集合,一个集合是将相同类型的文档管理起来。
创建集合
db.createCollection(name, options)
以下实例创建collection1集合
> use test
switched to db test
> db.createCollection("collection1")
{ "ok" : 1 }
参数说明:
name: 要创建的集合名称
options: 可选参数, 指定有关内存大小及索引的选项,参数如下:
字段 | 类型 | 描述 |
capped | 布尔 | (可选)如果为 true ,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。当该值为 true 时,必 须指定 size 参数。 |
autoIndexId | 布尔 | (可选)如为 true ,自动在 _id 字段创建索引。默认为 false 。 |
size | 数值 | (可选)为固定集合指定一个最大值(以字节计)。 如果 capped 为 true,也需要指定该字段。 |
max | 数值 | (可选)指定固定集合中包含文档的最大数量。 |
小提示:在插入文档时, MongoDB 首先检查固定集合的 size 字段,然后检查 max 字段。
查看集合
show collections
删除集合
db.collection_name.drop()
以下实例删除了 test 数据库中的集合 collection1 :
> use test
switched to db test
> show tables
collection1
> db.collection1.drop()
true
文档
文档是一组键值对(key-value)(即 BSON)。MongoDB文档不需要设置相同的字段,并且字段相同不需要相同的数据类型,这与关系型数据库有很大的不同,也是MongoDB的一个非常突出的特点。
插入文档
MongoDB 使用 insert() 或 save() 方法向集合中插入文档,语法如下:
db.COLLECTION_NAME.insert(document)
在 collection 集合中插入以下文档:
db.collection1.insert({"name":"大雄","age":20})
更新文档
方式一:
db.collection.update(<query>,<update>,<options>)
参数说明:
query:查询条件,相当于sql语句的where
update:更新文档内容
options:选项
将符合条件 "name":"大雄"的第一个文档替换为{"name":"大雄1","age":25}
db.collection1.update({"name":"大雄"},{"name":"大雄1","age":25})
方式二:
$set修改器(使用$set修改器指定要更新的key,key不存在则创建,存在则更新。)
将符合条件 "name":"大雄"的所有文档更新name和age的值。
db.collection1.update({"name":"大雄1"},{$set:{"name":"大雄smile","age":26},{multi:true})
小提示:multi为false时表示更新第一个匹配的文档,true表示更新所有匹配的文档。
删除文档
MongoDB remove()函数是用来移除集合中的数据。
db.collection.remove( <query>, <justOne> )
如果你的 MongoDB 是 2.6 版本以后的,语法格式如下:
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
参数说明:
query :(可选)删除的文档的条件。
justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
writeConcern :(可选)抛出异常的级别。
(1)删除所有文档
db.collection1.remove({})
(2)删除符合条件的文档
db.collection1.remove({"name":"大雄1"})
如果你只想删除第一条找到的记录可以设置 justOne 为 1
db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)
查询文档
MongoDB 查询数据的语法如下:
db.collection.find(query, projection)
参数说明:
query :可选,使用查询操作符指定查询条件
projection :可选,投影查询key,查询时返回文档中所有键值,可不填
(1)查询全部
db.collection1.find()
(2)查询符合条件的记录
db.collection1.find({"name":"大雄1"})
(3)投影查询,只显示name和age两个key,_id主键不显示。
db.collection1.find({"name":"大雄smile"},{name:1,age:1,_id:0})
如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:
db.collection1.find().pretty()
pretty() 方法以格式化的方式来显示所有文档
limit与skip方法
limit()方法基本语法:
db.COLLECTION_NAME.find().limit(NUMBER)
读取指定数量为两条记录
db.collection1.find({},{"name":1,_id:0}).limit(2)
如果你们没有指定limit()方法中的参数则显示集合中的所有数据。
skip() 方法 基本语法:
db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
使用skip()方法来跳过指定数量的数据,显示第二条文档数据命令如下:
db.collection1.find({},{"name":1,_id:0}).limit(1).skip(1)
文档排序
db.COLLECTION_NAME.find().sort({KEY:1})
小贴士:sort() 方法可以通过参数指定排序的字段, 其中 1 为升序排列,而 -1 是用于降序排列。
db.collection1.find({}).limit(2).sort({"age":1})
总结
以上详细介绍MongoDB对数据库、集合、文档的常用操作,希望对你操作MongoDB有一定的帮助。如果你不清楚的问题,欢迎下方留言。