MongoDB:基于分布式文件存储的数据库由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库(nosql)之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
MongoDB的优点:
MongoDB的提供了一个面向文档存储,操作起来比较简单和容易。
如果负载的增加,它可以分布在计算机网络中的其他节点上这就是所谓的分片。
MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。
为什么学习MongoDB?
MongoDB解决Mysql 的“三高”问题:
MongoDB的缺点:
SQL术语 | MongoDB术语 | 解释说明 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表 |
row | document | 数据记录行 |
column | field | 数据字段/域 |
index | index | 索引 |
table joins | 表连接,MongoDB不支持 | |
primary key | primary key | 主键啊,MongoDB自动将_id字段设置为主键 |
创建数据库: use dbname
如果数据库不存在,则创建数据库,否则切换到指定数据库。
在 MongoDB 中,集合只有在内容插入后才会创建! 就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。
通过 db 来查看当前使用的数据库
删除数据库
db . dropDatabase()
创建集合:
db.createCollection(“集合名”)
查看集合:
show collections / show tables
删除集合:
db.集合名.drop()
db.col.insert({title: '一些数据',
description: 'MongoDB 是一个 Nosql 数据库',
tags: ['mongodb', 'database', 'NoSQL']
})
更新数据:
db.集合名.update({查询条件},{$set:{更新内容}},
{
upsert: <boolean>,
multi: <boolean>,
}
)
upsert: 默认为false ,如果查询不到数据,则把跟新输入插入
multi:默认为false,默认只改一条,true,更改多条
db.col.update({'name':'张三'},{$set:{'name':'张三丰'}})
db.col.update({'name':'张三'},{$set:{'name':'张三丰'}},{multi:true})
db.col.update({'name':'张三'},{$set:{'name':'张三丰'}},{upsert:true,multi:true})
删除文档:
db.集合名称.remove(
,
{
justOne:
}
)
删除所有数据:
db.col.remove({})
删除一条数据:
db.col.remove({“name”:”张三”},{justOne:true})
删除多条数据
db.col.remove(“name”:”张三”})
MongoDB 查询文档使用 find() 方法。
find() 方法以非结构化的方式来显示所有文档。
db.collection.find(query)
pretty() 方法以格式化的方式来显示所有文档,linux下有用。
db.col.find().pretty()
MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件。
db.col.find({key1:value1, key2:value2})
MongoDB OR 条件语句使用了关键字 $or
db.col.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}
)
AND 和 OR 联合使用,类似常规 SQL 语句为:
where key1>value1 AND (key2 = value2 OR key3 = value3)
db.col.find({“key1": {$gt:value1}, $or: [{“key2": “value2"},{“key3": “value3"}]})
col"集合中 “key" 大于100,小于 200 的数据
> db.col.find({“key” : {$lt :200, $gt : 100}})
相当于RDBMS:
Select * from col where key>100 AND key<200;
查询 name 包含“小"字的文档:
db.col.find({“name”:/小/})
查询 name 字段以“小"字开头的文档:
db.col.find({“name”:/^小/})
查询 name字段以“小"字结尾的文档:
db.col.find({“name”:/小$/})
如果你需要在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数。
> db.col.find().limit(NUMBER)
我们除了可以使用limit()方法来读取指定数量的数据外,还可以使用skip()方法来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数。
> db.col.find().limit(NUMBER).skip(NUMBER)
在 MongoDB 中使用count() 来统计个数
>db.col.count(【{key:value}】)
在 MongoDB 中使用 sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。
>db.col.find().sort({KEY:1})
``
在 MongoDB 中使用count() 来统计个数
>db.col.count(【{key:value}】)
在 MongoDB 中使用 sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。
>db.col.find().sort({KEY:1})