# 简介
MongoDB (opens new window) 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
# 数据库
一个 mongodb 中可以建立多个数据库。
MongoDB 的默认数据库为"db",该数据库存储在 data 目录中。
MongoDB 的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限,不同的数据库也放置在不同的文件中。
# 连接
使用默认端口来连接 MongoDB 的服务。
mongodb://localhost
# 连接命令格式
使用用户名和密码连接到 MongoDB 服务器,你必须使用 'username:password@hostname/dbname' 格式,'username'为用户名,'password' 为密码。
使用用户 admin 使用密码 123456 连接到本地的 MongoDB 服务上。输出结果如下所示:
> mongodb://admin:123456@localhost/
使用用户名和密码连接登录到指定数据库,格式如下:
mongodb://admin:123456@localhost/test
# 数据库操作
# 创建数据库
use DATABASE_NAME
如果数据库不存在,则创建数据库,否则切换到指定数据库。
# 删除数据库
db.dropDatabase()
删除当前数据库,你可以使用 db 命令查看当前数据库名。
# 查看所有数据库
> show dbs
local 0.078GB
test 0.078GB
2
3
# 显示当前数据库对象
> db
test
2
# 插入数据
db.runoob.insert({"name":"菜鸟教程"})
# 创建集合
db.createCollection(name, options)
参数说明:
- name: 要创建的集合名称
- options: 可选参数, 指定有关内存大小及索引的选项
# 删除集合
db.collection.drop()
以下实例删除了 runoob 数据库中的集合 site:
> use runoob
switched to db runoob
> db.createCollection("runoob") # 先创建集合,类似数据库中的表
> show tables # show collections 命令会更加准确点
runoob
> db.runoob.drop()
true
> show tables
>
2
3
4
5
6
7
8
9
# 查看已有集合
可以使用 show collections 或 show tables 命令:
> show collections
runoob
system.indexes
2
3
# 自动创建集合
> db.mycol2.insert({"name" : "菜鸟教程"})
> show collections
mycol2
...
2
3
4
# 插入文档
db.collection.insert(document)
# 插入一个文档
db.collection.insertOne()
# 插入一个多个文档
db.collection.insertMany()
2
3
4
5
# 更新文档
db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})
# 删除文档
db.col.remove({'title':'MongoDB 教程'})
# 删除所有数据
db.col.remove({})
# 查询文档
db.col.find().pretty()
# AND 条件
MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件。
db.col.find({key1:value1, key2:value2}).pretty()
# OR 条件
MongoDB OR 条件语句使用了关键字 $or,语法格式如下:
db.col.find({$or:[{"by":"菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()
# AND 和 OR 联合使用
以下实例演示了 AND 和 OR 联合使用,类似常规 SQL 语句为: 'where likes>50 AND (by = '菜鸟教程' OR title = 'MongoDB 教程')'
db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()
# 条件操作符
MongoDB中条件操作符有:
- (>) 大于 - $gt
- (<) 小于 - $lt
- (>=) 大于等于 - $gte
- (<= ) 小于等于 - $lte
示例:
db.col.find({likes : {$gt : 100}})
类似于SQL语句:
Select * from col where likes > 100;
# 排序
1 为升序排列,而 -1 是用于降序排列。
db.collection.find().sort({KEY:1})
# 索引
使用 createIndex() 方法来创建索引。
db.collection.createIndex(keys, options)
语法中 Key 值为你要创建的索引字段,1 为指定按升序创建索引,如果你想按降序来创建索引指定为 -1 即可。
db.col.createIndex({"title":1})
createIndex() 方法中你也可以设置使用多个字段创建索引(关系型数据库中称作复合索引)。
>db.col.createIndex({"title":1,"description":-1})