Linfinity

Never say never.
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

MongoDB

Posted on 2019-02-02 21:09  Linfinity  阅读(150)  评论(0)    收藏  举报

一、基本介绍

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。

高负载的情况下,添加更多的节点,可以保证服务器性能

MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB 将数据存储为一个文档数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

 

mongodb核心的概念

 

mongodb的注意事项

1) 文档中的/值对是有序的。

2) 文档中的值不仅可以是在双引号里面字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档)

3) MongoDB区分类型和大小写

4) MongoDB的文档不能有重复的键

5) 文档的键是字符串。除了少数例外情况,键可以使用任意UTF-8字符

 

二、安装

linuxmongodb的安装:

将安装包解压直接得到服务端可执行文件和客户端可执行文件,将解压后的文件夹移动到/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);
  
?>