一、基本介绍
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

mongodb核心的概念

mongodb的注意事项
1) 文档中的键/值对是有序的。
2) 文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档)。
3) MongoDB区分类型和大小写。
4) MongoDB的文档不能有重复的键。
5) 文档的键是字符串。除了少数例外情况,键可以使用任意UTF-8字符。
二、安装
linux中mongodb的安装:
将安装包解压直接得到服务端可执行文件和客户端可执行文件,将解压后的文件夹移动到/usr/local/下即可。
解压后所得:

注意:开启mongodb服务端需要指定数据库的存储目录(data)和日志的存储目录(log)
在/usr/local/mongodb/目录下分别创建两个目录
mkdir data log
创建一个加载的文件mongod.ini

开启mongodb的服务器端
./bin/mongod -f /usr/local/mongodb/mongod.ini &
windows中mongodb的安装:
windows下安装mongodb直接点击下一步即可,需要注意开启服务端:
第一步:新建一个存储数据库和日志的目录如mongodb,并在该文件夹里创建两个子文件夹data和log用以存储数据库和日志。
第二步:以管理员的方式进入cmd
进入mongodb安装路径bin目录下
mongod.exe --dbpath=c:\mongodb\data --logpath=c:\mongodb\log\log.txt --install
第三步:进入服务管理,开启服务

三、数据库的操作
1、查询操作
在客户端指定数据库进行连接:(默认连接本机test数据库)> db test
查看当前数据库版本 > db.version() 3.2.8
切换数据库 > use phpdb; switched to db phpdb
显示当前数据库 > db test > db.getName() test
查询所有数据库 > show dbs; clsn 0.000GB local 0.000GB test 0.000GB > show databases; clsn 0.000GB local 0.000GB test 0.000GB
查看clsn数据库当前状态 > use clsn; > db.stats() { "db" : "clsn", "collections" : 1, "objects" : 10000, "avgObjSize" : 80, "dataSize" : 800000, "storageSize" : 258048, "numExtents" : 0, "indexes" : 1, "indexSize" : 94208, "ok" : 1 }
查看当前数据库的连接机器地址 > db.getMongo() connection to 127.0.0.1
2、数据库的增删改查
(1)创建数据库 use databasename (如果库没有则创建,有则切换到使用的数据库。 如果不在库中增加集合或文档,则库还会消失。 如果创建了集合文档,库就会被自动创建。) (2)删除数据库 use database; db.dropDatabase():注意大小写。 (3)查看数据库 show dbs:查看所有的数据库。 db:查看当前的数据库。 (4)查看数据库的状态 db.stats()
3、数据库表(集合)的操作
1、创建表 语法说明: db.createCollection(‘collectionname’) 2、修改表 语法说明: db.oldCollection.renameCollection(‘newCollection’) 具体实例:给表改名称 3、查看表 语法说明: show collections; show tables; 4、删除表 语法说明: db.collectionname.drop()
4、文档对象的操作
所有存储在集合中的数据都是BSON格式。
BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON。
1、添加数据 MongoDB 使用 insert() 或 save() 方法向集合中插入文档, 语法如下: db.COLLECTION_NAME.insert(document) 2、查看数据 db.COLLECTION_NAME.find() find() 方法以非结构化的方式来显示所有文档。 如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下: db.col.find().pretty() 3、修改数据 语法如下: db.collection.update( query, update, { upsert: <boolean>, multi: <boolean>, }) 参数说明: query : update的查询条件,类似sql update查询内where后面的。 update : update的对象和一些更新的操作符(如$set,$inc...)等, upsert : 如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。 multi : 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。 4、删除数据 语法说明: remove({条件}) 删除一条重复数据:justOne:ture 删除所有:remove({})
四、数据库索引
索引:提高网站的查询效率,给字段加索引
索引的分类:
普通索引
唯一索引
1、添加索引 db.collectionname.ensureIndex({key:1}); 语法中 Key 值为你要创建的索引字段,1为指定按升序创建索引,如果你想按降序来创建索引指定为-1即可。 创建一个唯一索引{unique:true} 2、查看索引 db.collectionname.getIndexes() 3、删除索引 语法说明: db.collectionname.dropIndex(‘索引的名称’);
五、文档对象的条件运算符
关系运算符
1) $gt:大于
2) $lt:小于
3) $gte:大于等于
4) $lte:小于等于
5) $ne:不等于
6) $eq:等于
7) $in:在某个集合中
8) $nin:不在某个集合中
9) $nin:不在某个集合中
使用实例:
db.user.find({age:{$gte:25,$lte:30}})
db.user.find({age:{$in: [25, 26,32]}})
db.user.find({age:{$exists:false}})
正则运算符
{属性: 正则表达式对象}
/正则表达式/
具体实例:
db.user.find({name:/^p/})
逻辑运算符
$and运算符 语法:{$and: [条件1, 条件2]} $or运算符 语法:{$or: [条件1, 条件2]}。 $not运算符 具体实例:db.user.find({name:{$not:{$eq:'xxx'}}});
数组对象元素检测($where)
数组
数组索引对应匹配, property.index
‘属性.index’, 表示该索引值的元素
具体实例:

对象的:$where条件
db.user.find({$where:function(){
if(this.age>=26){
return true;
}
else{
return false;
}
}},{'_id':false});
具体实例:

查询的条件(查询全部,去掉id号)
查询全部数据,去掉id号。
db.user.find({},{_id:false})
其他查询的条件
limit(number):显示几条数据
skip(number):跳过几条数据
sort():排序 sort({age:1}) 1:升序,-1:降序
count():记录数
distinct():消除重复 的数据
六、文件的修改操作
(1)$set:修改字段的值
具体实例:

(2)$unset:删除某个字段
具体实例:

(3)$inc:递增递减数据
具体实例:

(4)$push:向数组中添加一条数据
具体实例:

(5)$pushAll:向数组添加多条数据

(6)$pull:从数组中拉出数据
具体实例:

(7)$pullAll:从数组中拉出多条数据
具体实例:

(8)$pop:删除数据
将数组中最后一个元素弹出栈!
具体实例:

(9) $addToSet:加入到数组
具体实例:

七、PHP操作mongodb
注:需事先安装扩展
代码实例:
<?php $mon = new MongoClient(); var_dump($mon);
?>
浙公网安备 33010602011771号