文章目录
一、MongoDB 简介
MongoDB
是由C++
语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB
旨在为WEB
应用提供可扩展的高性能数据存储解决方案。
MongoDB
将数据存储为一个文档,数据结构由键值(key=>value)
对组成。MongoDB
文档类似于 JSON
对象。字段值可以包含其他文档,数组及文档数组。
二、Linux 下 MongoDB 的安装
- 解压文件
tar -zxvf mongodb-linux-x86_64-4.0.11.tgz -C /usr/local/mongodb
- 添加路径到环境变量中
export PATH=/usr/local/mongodb/bin:$PATH
- 启动
mongodb
# 添加--bind_ip=0.0.0.0即可远程访问
mongod --bind_ip=0.0.0.0
三、MongoDB 命令介绍
3.1 数据库操作
创建数据库:
use DATABASE_NAME
删除数据库:
db.dropDatabase()
3.2 集合操作
① 创建集合
db.createCollection(name, options)
参数说明:
name
:要创建的集合名称options
:可选参数,指定有关内存大小及索引的选项
字段 | 类型 | 描述 |
---|---|---|
capped | 布尔 | (可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。 当该值为 true 时,必须指定 size 参数。 |
autoIndexId | 布尔 | (可选)如为 true,自动在 _id 字段创建索引。默认为 false。 |
size | 数值 | (可选)为固定集合指定一个最大值,以千字节计(KB)。 **如果 capped 为 true,也需要指定该字段。**w |
max | 数值 | (可选)指定固定集合中包含文档的最大数量。 |
案例:
db.createCollection("user",
{ capped : true, autoIndexId : true, size : 6142800, max : 10000 })
② 删除集合
db.COLLECTION_NAME.drop()
--例
db.user.drop()
3.3 插入文档
文档(document
)的数据结构和JSON
基本一样。所有存储在集合中的数据都是BSON
格式。BSON
是一种类似JSON
的二进制式的存储格式。
db.COLLECTION_NAME.insert(document)
--例
db.mycol.insert({"name":"jack","age":18})
插入文档也可以使用 db.col.save(document)
命令。如果不指定_id
字段save()
方法类似于 insert()
方法。如果指定_id
字段,则会更新该_id
的数据
3.4 更新文档
MongoDB
使用update()
和save()
方法来更新集合中的文档。
db.COLLECTION_NAME.update(<query>,<update>,{option})
--例
db.user.update({"age":33}, {"name":"rose","age":33})
参数说明:
query
:update
的查询条件,类似sql update
查询内where
后面的。update
:update的
对象和一些更新的操作符(如$
,$inc
…)等,也可以理解为sql update
查询内set
后面的options
:可选参数
字段 | 描述 |
---|---|
upsert | 如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。 |
multi | mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。 |
writeConcern | 抛出异常的级别。 |
3.5 删除文档
db.collection.remove(<query>,<justOne>)
如果你的MongoDB
是2.6版本以后的,语法格式如下:
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
参数说明:
- query :(可选)删除的文档的条件。
- justOne : (可选)如果设为
true
或 1,则只删除一个文档,如果不设置该参数,或使用默认值false
,则删除所有匹配条件的文档。 - writeConcern :(可选)抛出异常的级别。
3.6 查询文档
db.collection.find(query, projection)
--例
db.user.find({"name":"jack"});
--查看全部
db.collection.find()
MongoDB 与 RDBMS Where 语句比较
操作 | 格式 | 范例 |
---|---|---|
等于 | {<key>:<value> } | db.user.find({“age”: 33}); |
小于 | {<key>:{$lt:<value>}} | db.user.find({“age”: {$lt:33}}); |
小于或等于 | {<key>:{$lte:<value>}} | db.user.find({“age”: {$lte:33}}); |
大于 | {<key>:{$gt:<value>}} | db.user.find({“age”: {$gt:33}}); |
大于或等于 | {<key>:{$gte:<value>}} | db.user.find({“age”: {$gte:33}}); |
不等于 | {<key>:{$ne:<value>}} | db.user.find({“age”: {$ne:33}}); |
MongoDB AND 条件
MongoDB
的 find()
方法可以传入多个键(key
),每个键以逗号隔开。
db.col.find({key1:value1, key2:value2})
--例
db.user.find({"name":"rose","age":33});
MongoDB OR 条件
db.col.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}
)
--例
db.user.find({
$or:
[
{"name":"jack"},{"age":33}
]
});