MONGDB安装以及使用



一.  基本概念:

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

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

 

二.MongoDB的安装

  1. 下载mongoDB

     wget http://downloads.mongodb.org/linux/mongodb-linux-i686-2.4.9.tgz  

如果上面地址不对可以去官网自己下载http://www.mongodb.org/downloads

        解压mongoDB

     tar zxvfmongodb-linux-i686-2.4.9.tgz  

  1. 创建指定的文件夹中并将mongodb复制过去

     mkdir -p/usr/local/mongodb  

     cp -Rmongodb-linux-i686-2.4.9/* /usr/local/mongodb/  

  1. 创建数据库存放目录和日志存放文件

     mkdir -p /data/mongo/data  

     touch /data/monogo/dblogs  

  1. 启动mongod

     /usr/local/mongodb/bin/mongod--dbpath=/data/mongo/data --    logpath=/data/mongo/dblogs  --logappend  --fork  

     //--fork 是为了让程序后台执行  

  1. 设置开机自启动

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

 

关闭mongod进程:pkill mongod

 

启动命令常用参数说明:

--dbpath                        指定数据库文件存放的目录

--port                      
指定mongod服务使用的端口默认27017

--fork                      
设置mongo服务为后台运行

--logpath                  
指定log文件的目录和文件名

--logappend             
设置每次log添加在文件最后

--journal                      
启用日志

--pidfilepath                
指定进程文件的路径,如果不指定,系统将不产生进程

--maxConns               
最大并发连接数

--noprealloc                
关闭数据文件的预分配功能

--rest                       
关闭rest api功能

--nohttpinterface        
关闭web管理功能

--auth                      
指定mongo使用身份验证机制

--bind_ip                 
绑定ip

 

 

三.MongoDB的重要知识点

 

启动MongoDB:/usr/share/mongodb/mongodb-linux-i686-2.4.9/bin/mongod --dbpath=/data/mongo/data --logpath=/data/mongo/dblogs  --logappend  --fork      (fork:在后台运行)

 

MongoDB 的 Web 界面:http://localhost:28017/

 

"show dbs" 命令可以显示所有数据的列表

 "db" 命令可以显示当前数据库

运行"use"命令,可以连接到一个指定的数据库

 

> use local
switched to db local
> db
local

 

 

 

SQL术语/概念MongoDB术语/概念解释/说明
databasedatabase数据库
tablecollection数据库表/集合
rowdocument数据记录行/文档
columnfield数据字段/域
indexindex索引
table joins 表连接,MongoDB不支持
primary keyprimary key主键,MongoDB自动将_id字段设置为主键

 

 

数据库名的命名规范:

 

数据库名可以是满足以下条件的任意UTF-8字符串。

  • 不能是空字符串("")。
  • 不得含有' '(空格)、.、$、/、\和\0 (空字符)。
  • 应全部小写。
  • 最多64字节。

有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库。

  • admin: 从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。
  • local: 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
  • config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。

 

 

MongoDB不正常关闭导致异常:

ERROR: child process failed, exited with error number 100

1. 删除mongod.lock文件,目录为: /data/mongo/data

2. 用repair的方式启动: /usr/share/mongodb/mongodb-linux-i686-2.4.9/bin/mongod --repair --dbpath=/data/mongo/data

3. 正常启动

 

四.MongoDB的常用命令:

 

1.  删除数据库:

db.dropDatabase()

 

2.  查询所有的数据库:

show dbs

 

3.  查询当前的数据库:

db

 

4. 删除数据库中的集合:

> use runoob
switched to db runoob
> show tables
site
> db.site.drop()
true
> show tables

 

5. 连接mongodb的客户端:

进入mongdb的斌目录,然后执行命令:   ./mongo

 

6.正常关闭mongodb:

use admin   db.shutdownServer()

mongod --shutdown

 

7.mongodb关于文档的操作:

a. 使用 insert() 或 save() 方法向集合中插入文档:        db.集合名称.insert(document).

>db.col.insert({title: 'MongoDB 教程',
    description: 'MongoDB 是一个 Nosql 数据库',
    by: '菜鸟教程',
    url: 'http://www.runoob.com',
    tags: ['mongodb', 'database', 'NoSQL'],
    likes: 100
})

 

b. 查看已插入文档:  db.集合名称.find()  ,也可以根据_id查询某条文档:

db.runoob.find(ObjectId("59e2e25753557f4869844e1a"))

 

c.  将数据定义为一个变量:

  document=({title: 'MongoDB 教程',
    description: 'MongoDB 是一个 Nosql 数据库',
    by: '菜鸟教程',
    url: 'http://www.runoob.com',
    tags: ['mongodb', 'database', 'NoSQL'],
    likes: 100
});

db.集合名称.insert(document)

 

d. 插入文档你也可以使用 save 命令,如果不指定 _id 字段 save() 方法类似于 insert() 方法。如果指定 _id 字段,则会更新该 _id 的数据。

 

e. 修改更新文档:

 

db.集合名称.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}}) //只更新一条

db.集合名称.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})   //更新多条记录

指定_id,使用save方法:

db.runoob.save({
    "_id" : ObjectId("59e2e25753557f4869844e1a"),
    "title" : "MongoDB2",
    "description" : "MongoDB 是一个 Nosql 数据库2",
    "by" : "Runoob2",
    "url" : "http://www.runoob.com2",
    "tags" : [
            "mongodb2",
            "NoSQL2"
    ],
    "likes" : 1102
})

更多修改操作:

只更新第一条记录:

db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );

全部更新:

db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );

只添加第一条:

db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );

全部添加加进去:

db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );

全部更新:

db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );

只更新第一条记录:

db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );

 

f. 删除文档:

db.test.remove({'age':'25'})   //删除多个

db.test.remove({'age':'19'},{justOne:1})  //删除一个

db.test.remove({}) //全部删除

 

g. 查询文档:

一般查询: db.runoob.find({'title':'MongoDB2'}).pretty()

and 查询:  db.runoob.find({'title':'MongoDB2','by':'Runoob2'}).pretty()

or  查询: db.runoob.find({$or:[{'title':'MongoDB2'},{'by':'Runoob3'}]})

混合查询: db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()  类似常规 SQL 语句为: 'where likes>50 AND (by = '菜鸟教程' OR title = 'MongoDB 教程')'

 

h. 条件操作符:

MongoDB中条件操作符有:

  • (>) 大于 - $gt
  • (<) 小于 - $lt
  • (>=) 大于等于 - $gte
  • (<= ) 小于等于 - $lte

 

db.col.find({"likes" : {$gt : 100}})  类似  Select * from col where likes > 100;

db.col.find({likes : {$gte : 100}})   类似 Select * from col where likes >=100;

db.col.find({likes : {$lt :200, $gt : 100}})  类似  Select * from col where likes>100 AND  likes<200;

 

i.排序操作:

MongoDB中使用使用sort()方法对数据进行排序,sort()方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而-1是用于降序排列

例子: db.col.find({},{"title":1,_id:0}).sort({"likes":-1})

 

j.聚合操作:

MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。有点类似sql语句中的 count(*)。

db.col.aggregate([{$group : {_id : "$title", num_tutorial : {$sum : 1}}}])

 

管道: 聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理

 

db.col.aggregate( [

...                         { $match : { likes : { $gt : 120, $lte : 200 } } },

...                         { $group: { _id: "$title", count: { $sum: 1 } } }

...                        ] );

 

db.col.aggregate(

...     { $skip : 2 });

 

8. MongDB的复制以及恢复操作:

/usr/share/mongodb/mongodb-linux-i686-2.4.9/bin/mongodump -h 127.0.0.1 -d test -o /data/mongo/copy/${DATE}

//恢复到特定的库和集合:

/usr/share/mongodb/mongodb-linux-i686-2.4.9/bin/mongorestore --db test --collection col  --drop  /data/mongo/copy/test/col.bson 

 

9. Mongdb的全文检索:

   a.  mongod --setParameter textSearchEnabled=true   //开启全文检索,2.6版本以后默认已开启

  b. db.posts.ensureIndex({post_text:"text"})  //对post_text字段建立全文索引

  c. db.posts.runCommand("text",{search:"runoob"})  //使用全文索引搜索关键字

  d.  db.posts.getIndexes()   //查找索引

  e.  db.posts.dropIndex("post_text_text")  //删除索引

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值