`

mongo安装以及简单使用

阅读更多
安装mongo 百度云下载地址 http://pan.baidu.com/s/1mgqgcsC
1.                   解压文件.
$ tar -xvf mongodb-linux-i686-1.4.3.tgz
 
2.                  为MongoDB创建数据目录,默认情况下它将数据存储在/data/db
$ sudo mkdir -p /data/db/
 
$ sudo chown `id -u` /data/db
 
3.                  启动MongoDB服务.
$ cd mongodb-linux-i686-1.4.3/bin
 
$ ./mongod
 
4.                  打开另一个终端,并确保你在MongoDB的bin目录,输入如下命令.
$ ./mongo
 
 
非结构性数据库没有删除和修改,改为被丢弃的文档集合
 
 
数据库配置层面
数据库备份与恢复
mongodump命令脚本语法如下:
 
>mongodump -h dbhost -d dbname -o dbdirectory
-h:
MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017
 
-d:
需要备份的数据库实例,例如:test
 
-o:
备份的数据存放位置,例如:c:\data\dump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。
mongorestore命令脚本语法如下:
 
>mongorestore -h dbhost -d dbname --directoryperdb dbdirectory
-h:
MongoDB所在服务器地址
 
-d:
需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2
 
--directoryperdb:
备份数据所在位置,例如:c:\data\dump\test,这里为什么要多加一个test,而不是备份时候的dump,读者自己查看提示吧!
 
--drop:
恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦!
 
mongostat 命令
mongostat是mongodb自带的状态检测工具,在命令行下使用。它会间隔固定时间获取mongodb的当前运行状态,并输出。如果你发现数据库突然变慢或者有其他问题的话,你第一手的操作就考虑采用mongostat来查看mongo的状态。
 
mongotop 命令
mongotop也是mongodb下的一个内置工具,mongotop提供了一个方法,用来跟踪一个MongoDB的实例,查看哪些大量的时间花费在读取和写入数据。 mongotop提供每个集合的水平的统计数据。默认情况下,mongotop返回值的每一秒。
 
启动你的Mongod服务,进入到你安装的MongoDB目录下的bin目录, 然后输入mongotop命令,如下所示:
 
D:\set up\mongodb\bin>mongotop
 
 
启动你的Mongod服务,进入到你安装的MongoDB目录下的bin目录, 然后输入mongostat命令,如下所示:
 
D:\set up\mongodb\bin>mongostat
 
增加:
删除:
修改:
查找:
用户:
1. #进入数据库admin
use admin
         2. #增加或修改用户密码
          db.addUser('name','pwd')
          db.addUser( { user: "superman", pwd: "talent", roles: [ "userAdminAnyDatabase" ] } )
         3. #查看用户列表
          db.system.users.find()
         4. #用户认证
          db.auth('name','pwd')
         5. #删除用户
          db.removeUser('name')
         6. #查看所有用户
          show users
         7. #查看所有数据库
          show dbs
         8. #查看所有的collection
          show collections
         9. #查看各collection的状态
          db.printCollectionStats()
        10. #查看主从复制状态
          db.printReplicationInfo()
        11. #修复数据库
          db.repairDatabase()
        12. #设置记录profiling,0=off 1=slow 2=all
          db.setProfilingLevel(1)
        13. #查看profiling
          show profile
        14. #拷贝数据库
          db.copyDatabase('mail_addr','mail_addr_tmp')
        15. #删除collection
          db.mail_addr.drop()
        16. #删除当前的数据库
          db.dropDatabase()
 
 
命名空间层面namespace
 
增加:use namespace
删除db.dropDatabase;
修改
查找show collections;db.printCollectionsStats();
 
文档集合层面collections
增加 db.collections.insert(document)
删除 db.collections.drop();
修改 
查找 db.collections.find();
show collections;db.printCollectionsStats();
建立文档索引:db.collections.ensureIndex({"filed":1/-1});
 
文档层面document
 
增加db.collections.insert(document);
删除db.collections.remove({"field":"value",~})
修改db.collectinos.update({"field":"value",~},{"field":"value",~})
查找db.collections.find({"field":"value",~}).limit(number1).skip(number2).sort("files":1/-1);(优先skip数量,不是第多少条)
 
document=({"field":"value","field":"value",...})
 
逻辑查找:
描述
条件操作符用于比较两个表达式并从mongoDB集合中获取数据。
 
在本章节中,我们将讨论如何在MongoDB中使用条件操作符。
 
MongoDB中条件操作符有:
(>) 大于 - $gt
(<) 小于 - $lt
(>=) 大于等于 - $gte
(<= ) 小于等于 - $lte
db.collections.find({"filed":{$gt: value }});
 
类型查找:
db.shareuser.find({"age":{$type:16  }  });
 
类型描述类型值
Double1
String2
Object3
Array4
Binary data5
Object id7
Boolean8
Date9
Null10
Regular expression11
JavaScript code13
Symbol14
JavaScript code with scope15
32-bit integer16
Timestamp17
64-bit integer18
Min key255
Max key127
 
aggregate() 方法
MongoDB中聚合的方法使用aggregate()。
 
语法
 
aggregate() 方法的基本语法格式如下所示:
 
>db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
实例
 
集合中的数据如下:
 
{
   _id: ObjectId(7df78ad8902c)
   title: 'MongoDB Overview', 
   description: 'MongoDB is no sql database',
   by_user: 'w3cschool.cc',
   url: 'http://www.w3cschool.cc',
   tags: ['mongodb', 'database', 'NoSQL'],
   likes: 100
},
{
   _id: ObjectId(7df78ad8902d)
   title: 'NoSQL Overview', 
   description: 'No sql database is very fast',
   by_user: 'w3cschool.cc',
   url: 'http://www.w3cschool.cc',
   tags: ['mongodb', 'database', 'NoSQL'],
   likes: 10
},
{
   _id: ObjectId(7df78ad8902e)
   title: 'Neo4j Overview', 
   description: 'Neo4j is no sql database',
   by_user: 'Neo4j',
   url: 'http://www.neo4j.com',
   tags: ['neo4j', 'database', 'NoSQL'],
   likes: 750
},
现在我们通过以上集合计算每个作者所写的文章数,使用aggregate()计算结果如下:
 
> db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])
{
   "result" : [
      {
         "_id" : "w3cschool.cc",
         "num_tutorial" : 2
      },
      {
         "_id" : "Neo4j",
         "num_tutorial" : 1
      }
   ],
   "ok" : 1
}
>
以上实例类似sql语句: select by_user, count(*) from mycol group by by_user
 
在上面的例子中,我们通过字段by_user字段对数据进行分组,并计算by_user字段相同值的总和。
 
下表展示了一些聚合的表达式:
 
表达式描述实例
$sum计算总和。db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}])
$avg计算平均值db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}])
$min获取集合中所有文档对应值得最小值。db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}])
$max获取集合中所有文档对应值得最大值。db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}])
$push在结果文档中插入值到一个数组中。db.mycol.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}])
$addToSet在结果文档中插入值到一个数组中,但不创建副本。db.mycol.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}])
$first根据资源文档的排序获取第一个文档数据。db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}])
$last根据资源文档的排序获取最后一个文档数据db.mycol.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}])
管道的概念
管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的参数。
 
MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理。管道操作是可以重复的。
 
表达式:处理输入文档并输出。表达式是无状态的,只能用于计算当前聚合管道的文档,不能处理其它的文档。
 
这里我们介绍一下聚合框架中常用的几个操作:
 
$project:修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。
$match:用于过滤数据,只输出符合条件的文档。$match使用MongoDB的标准查询操作。
$limit:用来限制MongoDB聚合管道返回的文档数。
$skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。
$unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。
$group:将集合中的文档分组,可用于统计结果。
$sort:将输入文档排序后输出。
$geoNear:输出接近某一地理位置的有序文档。
管道操作符实例
 
1、$project实例
 
db.article.aggregate(
    { $project : {
        title : 1 ,
        author : 1 ,
    }}
 );
这样的话结果中就只还有_id,tilte和author三个字段了,默认情况下_id字段是被包含的,如果要想不包含_id话可以这样:
 
db.article.aggregate(
    { $project : {
        _id : 0 ,
        title : 1 ,
        author : 1
    }});
2.$match实例
 
db.articles.aggregate( [
                        { $match : { score : { $gt : 70, $lte : 90 } } },
                        { $group: { _id: null, count: { $sum: 1 } } }
                       ] );
$match用于获取分数大于70小于或等于90记录,然后将符合条件的记录送到下一阶段$group管道操作符进行处理。
 
3.$skip实例
 
db.article.aggregate(
    { $skip : 5 });
 
 
引用博客地址
http://ldd600.iteye.com/blog/974813
http://www.w3cschool.cc/mongodb/mongodb-replication.html

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics