您的位置:首页 > 数据库 > Mongodb

mongodb安装与基础使用

2014-01-24 11:47 549 查看
一:mongodb安装

1.下载安装包

       http://www.mongodb.org 找到相应的版本下载

   wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-2.0.2.tgz

2.解压压缩包

       tar zxvfmongodb-linux-i686-2.0.2.tgz

  最好给解压的文件夹改个名字,方便操作。

       mvmongodb-linux-i686-2.0.2   mongodb

3.将mongodb移动到/usr/local/mongo文件夹

       mv mongodb/usr/local/mongodb

   创建数据库文件夹(默认的数据库文件的位置是/data/db,启动时会自动创建)

      mkdir   /usr/local/mongodb/data

     touch dblogs 创建一个dblogs来存放日志

4.开机自启动

    将mongodb启动项目加入rc.local保证mongodb在服务器开机时启动

         echo"/usr/local/mongodb/bin/mongod--dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/dblogs--fork" >> /etc/rc.local

5.启动mongoDB

    运行mongod命令

    --dbpath执行数据库存放路径(默认是/data/db)

    --fork是以Daemon(守护进程)方式运行

        注意:如果指定--fork参数,必须指定--logpath日志文件路径  如果不加--fork参数,则需要再开启一个MongoDB启动窗口

    /usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data--logpath=/usr/local/mongodb/logs/log –fork

6.关闭mongodb 

  Pkillmongod

7.进入客户端操作

/usr/local/mongodb/bin/mongo

二:mongodb常用命令

Show dbs  查看数据库

Db  当前数据库

Show tables 当前数据库下的集合

Db.c1.insert({name:”user1”})  插入数据

Db.c1.find();

Db.system.users.find()查看用户列表

Show users  查看所有用户

Showcollections 查看所有集合

Db.doroDatabase();删除当前数据库

删除Collection db.集合名.drop();

想知道mongodb支持哪些命令,可以直接输入help;

想知道当前数据库支持哪些方法:db.help();

想知道当前集合支持哪些方法:db.user.help();user为集合名

三:mongodb增删改查

1)增加数据:

         Insert

         Save如果主键相同,则更新

删除数据:

remove

2)查询数据

Db.user.find({_id:{$gt:20}}).limit(8);  取8个

Db.user.find({_id:{$gt:20}}).skip(1).limit(8);取2到8个

Db.c1.count();  db.c1.find().count();统计个数  count的参数为1的情况,可以结合前面的条件,统计

Db.find().sort(age:1)  升序

Db.find().sort(aget:-1);降序

$all操作类似$in操作,但是不同的是,$all操作要求数组里面的值全部被包含在返回的记录里面

$exists操作检
4000
查一个字段是否存在

Db.c1.find({age:{$exists:1}})  判断age字段是否存在

$ne的意思是not equal不等于

Db.c1.find({_id:{$ne:0}}).limit(5);

$in 操作类似于传统关系数据库中的IN

Db.c3.find({“post.tid”:2}); post字段里面放的的json对象,这样可以查找post字段中属性tid为2的数据。(为了避免其他语言对点造成干扰,因此常用$elemMatch)

3)更改数据

Db.collection.update(criteria,objNew,upsert,multi);

Criteria 用于设置查询条件的对象

objNew 用于设置更新内容的对象

upsert  如果记录存在更新,否则新增一个记录

multi   如果有多个符合条件对象,则全部更新(默认只更新第一条)

$set $inc用法

db.users.update({age:25}, {$set: {name: 'changeName'}}, false, true);

相当于:update users setname = ‘changeName’ where age = 25;

db.users.update({name:'Lisi'}, {$inc: {age: 50}}, false, true);

相当于:update users setage = age + 50 where name = ‘Lisi’;

db.users.update({name:'Lisi'}, {$inc: {age: 50}, $set: {name: 'hoho'}}, false, true);

相当于:update users setage = age + 50, name = ‘hoho’ where name = ‘Lisi’;

$unset      删除给定字段

         $push向数组中压入一个值

$pop  从数组中弹出一个值

四:固定集合

属性:

对固定集合进行插入速度极快

按照插入顺序的的查询输出速度极快

能够再插入最新数据时,淘汰老的数据

创建固定集合:

不像普通集合,需要显式创建 

db.createCollection(“my_collection”,{capped:true,size:1000})

GridFS可以用来存储较大的二进制文件,比如音频,视频等(具体使用,查看收手册)

五:性能优化

1)索引管理:

创建索引

db.persons.ensureIndex({name:1},{background:true})

查询索引

db.c1.getIndexKeys();

2)性能优化:

解析查询语句

Db.c2.find(user:”user5”).explain();

优化器profile

是一种慢查询日志功能,开启profile有两种方式可以控制profiling的开关和级别

启动mongdb时加上-profile=级别即可.级别为0,1,2三个值,0不开启,1记录慢命令(默认为)100ms)2记录所有命令

客户端使用db.setProfilingLevel(级别)命令来实时配置

Profiler信息保存在system.profile中。我们可以通过db.getPrifilingLevel()命令来获取当前的profile级别

3)性能监控:

工具mongosniff

./nongosniff –sourceNET lo

六.Mongodb管理

数据导入 mongoexport

数据导出 mongoimport

用户安全与认证 :启动时有—auto参数后,数据库会开启对使用者的验证。用户分为超级管理员和数据库管理员。超级管理员需要到admin验证后,才可以进入其他数据库。数据库管理员在其数据库进行验证,并只能管理其数据库。一个数据库增加管理员之后,该数据库会创建一张表,来存贮管理员

六. Mongodb 架构

         Master-Slave

         ReplicaSets

七.mongodb 安装扩展

wget http://pecl.php.net/get/mongo-1.2.6.tgz

tar zxf mongo-1.2.6.tgz

cd mongo-1.2.6

/usr/local/php/bin/phpize

./configure--with-php-config=/usr/local/php/bin/php-config --enable-mongo

make && make install

查看so模块

cd/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/

ls

vim /usr/local/php/etc/php.ini

extension=mongo.so

如果是nginx的话需要重启php-fpm
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: