一、简介
1、mongodb是由c++编写的,是一个基于分布式文件存储的开源数据库系统
2、数据结构由键值对组成,类似于json对象
3、常用的概念解析
SQL术语 | MongoDB术语 | 说明 |
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 行/队列 |
column | field | 字段/域 |
index | index | 索引 |
primary key | primary key | 主键 |
二、常用的数据类型
String : 这是最常用的数据类型来存储数据。在MongoDB中的字符串必须是有效的UTF-8。
Integer : 这种类型是用来存储一个数值。整数可以是32位或64位,这取决于您的服务器。
Boolean : 此类型用于存储一个布尔值 (true/ false) 。
Double : 这种类型是用来存储浮点值。
Min/ Max keys : 这种类型被用来对BSON元素的最低和最高值比较。
Arrays : 使用此类型的数组或列表或多个值存储到一个键。
Timestamp : 时间戳。这可以方便记录时的文件已被修改或添加。
Object : 此数据类型用于嵌入式的文件。
Null : 这种类型是用来存储一个Null值。
Symbol : 此数据类型用于字符串相同,但它通常是保留给特定符号类型的语言使用。
Date : 此数据类型用于存储当前日期或时间的UNIX时间格式。可以指定自己的日期和时间,日期和年,月,日到创建对象。
Object ID : 此数据类型用于存储文档的ID。
Binary data : 此数据类型用于存储二进制数据。
Code : 此数据类型用于存储到文档中的JavaScript代码。
Regular expression : 此数据类型用于存储正则表达式
三、常用的操作
1、常用的帮助提示
db.help() //帮助
2、操作数据库
use db_name //创建或指定数据库,db_name为数据库 名称,如果不存在则进行创建,如果存在则切换到该数据库
db //显示当前数据库
db.getName() //显示当前数据库的名称
show dbs //显示所有数据库
db.dropDatabase() //删除当前指定的数据库
db.cloneDatabase(host) //从指定主机上克隆数据库
db.stats() //显示当前数据库状态
db.version() //显示数据库版本号
db.getMongo() //查看当前数据的连接信息
3、操作Collection(集合)
db.createCollection(collection_name,options) //创建一个集合,collection_name为集合名称,options为配置的一些选项
字段 | 类型 | 描述 |
capped | Boolean | (可选)如果为true,则启用封顶集合。封顶集合是固定大小的集合,会自动覆盖最早的条目,当它达到其最大大小。如果指定true,则需要也指定尺寸参数。 |
autoIndexID | Boolean | (可选)如果为true,自动创建索引_id字段的默认值是false。 |
size | number | (可选)指定最大大小字节封顶集合。如果封顶如果是 true,那么你还需要指定这个字段。 |
max | number | (可选)指定封顶集合允许在文件的最大数量。 |
db.collection_name.drop() //删除指定的集合
db.col_name.update(selection_criteria,update_data) //更新文档
例:db.mycol.update({'title':'MongoDB'},{$set:{'title':'New MongoDB'}})
db.getCollection(collection_name) //得到指定名称的集合
db.getCollectionNames() //获取当前数据库的所有集合
db.collection_name.find() //显示该集合的所有文档数据
db.collection_name.find(select_criteria) //条件查询
例:db.mycol.find({"age": 20}); //查询age=20的记录
db.mycol.find({“age”:{$lt:20}}) //查询age<20的记录
db.mycol.find({“age”:{$lte:20}}) //查询age<=20的记录
db.mycol.find({“age”:{$gt:20}}) //查询age>20的记录
db.mycol.find({“age”:{$gte:20}}) //查询age>=20的记录
db.mycol.find({“age”:{$ne:20}}) //查询age!=20的记录
db.mycol.find({“age”:{$gte:20,$lte:25}}) //查询20~25之间
db.collection_name.find({key1:value1,key2:value2}) //and
db.collection_name.find({$or: [ {key1: value1}, {key2:value2} ]}) //or
db.collection_name.find().limit(number) //限定查询的记录数
db.col_name.find()limit(number).skip(n) //跳过n条记录
db.col_name.find().sort({key:1}) //按该字段key的升序排列
db.col_name.find().sort({key:-1}) //按该字段key的降序排列
ensureIndex() 方法也可以接受的选项列表(可选),其下面给出的列表:
参数 | 类型 | 描述 |
background | Boolean | 在后台建立索引,以便建立索引并不能阻止其他数据库活动。指定true建立在后台。默认值是 false. |
unique | Boolean | 创建唯一索引,以便收集不会接受插入索引键或键匹配现有的值存储在索引文档。指定创建唯一索引。默认值是 false. |
name | string | 索引的名称。如果未指定,MongoDB中都生成一个索引名索引字段的名称和排序顺序串联. |
dropDups | Boolean | 创建一个唯一索引的字段,可能有重复。 MongoDB的索引只有第一次出现的一个键,从集合中删除的所有文件包含该键的后续出现的。指定创建唯一索引。默认值是 false. |
sparse | Boolean | 如果为true,指数只引用文档指定的字段。这些索引使用更少的空间,但在某些情况下,特别是各种不同的表现。默认值是 false. |
expireAfterSeconds | integer | 指定一个值,以秒为TTL控制多久MongoDB的文档保留在此集合. |
v | index version | 索引版本号。默认的索引版本取决于mongodb 运行的版本在创建索引时. |
weights | document | 权重是从1到99999范围内的数,表示该字段的意义,相对于其他的索引字段分数. |
default_language | string | 对于文本索引时,决定停止词和词干分析器和标记生成规则列表的语言。默认值是 english. |
language_override | string | 对于文本索引时,指定的名称在文档中包含覆盖默认的语言,语言字段中。默认值是语言。 |
4、操作用户
db.addUser(user_name) //添加用户
db.addUser(user_name,password,true) //添加用户密码,是否只读
db.auth(user_name,password) //数据库认证、安全模式
show users //显示当前所有用户
db.removeUser(user_name) //删除用户