第一章:MongoDB for windows下载安装

来源:互联网 发布:fifaonline3合卡软件 编辑:程序博客网 时间:2024/06/13 13:54


一、下载


MongoDB的官网是:http://www.mongodb.org/

MongoDB最新版本下载在官网的DownLoad菜单下:http://www.mongodb.org/downloads 

Windows 64-bit 3.1.2  对应的是MongoDB版本为Windows 64-bit 3.1.2

Red Hat Enterprise Linux Server Release 5.5 对应的是mongodb-linux-x86_64-rhel55-3.0.2版本


二、安装



1.双击mongodb-win32-x86_64-2008plus-ssl-3.1.2-signed.msi文件,步骤略。

2.D:\Program Files\mongodb 下建立Data文件夹 D:\Program Files\mongodb\data ,然后分别建立db,log两个文件夹,至此mongodb下有以下文件夹

 D:\Program Files\mongodb\bin

 D:\Program Files\mongodb\data\db

 D:\Program Files\mongodb\data\log

在log文件夹下创建一个日志文件MongoDB.log,即D:\Program Files\mongodb\data\log\MongoDB.log

完成以上工作后,你为奇怪为什么要建立这些文件夹(因为,Mongodb安装需要这些文件夹,默认安装是不用创建,但是文件都为安装到C:\data\下)


3.几种安装方式介绍

3.1 程序启动方式

  

 3.1.1 运行cmd.exe 进入DOS命中界面

> cd  D:\Program Files\mongodb\Server\3.1\bin

> D:\Program Files\mongodb\Server\3.1\bin>mongod -dbpath "D:\Program Files\mongodb\data\db"

D:\Program Files\mongodb\Server\3.1\bin>mongod -dbpath "D:\Program Files\mongodb\data\db"
2015-05-04T14:43:07.076+0800 I CONTROL  Hotfix KB2731284 or later update is not installed, will zero-out data files
2015-05-04T14:43:07.094+0800 I JOURNAL  [initandlisten] journal dir=D:\Program Files\mongodb\data\db\journal
2015-05-04T14:43:07.096+0800 I JOURNAL  [initandlisten] recover : no journal files present, no recovery needed
2015-05-04T14:43:07.173+0800 I JOURNAL  [durability] Durability thread started
2015-05-04T14:43:07.174+0800 I JOURNAL  [journal writer] Journal writer thread started
2015-05-04T14:43:07.248+0800 I CONTROL  [initandlisten] MongoDB starting : pid=4808 port=27017 dbpath=D:\Program Files\mongodb\data\db 64-bit host=BR56
2015-05-04T14:43:07.248+0800 I CONTROL  [initandlisten]
2015-05-04T14:43:07.249+0800 I CONTROL  [initandlisten] ** NOTE: This is a development version (3.1.2) of MongoDB.
2015-05-04T14:43:07.253+0800 I CONTROL  [initandlisten] **       Not recommended for production.
2015-05-04T14:43:07.255+0800 I CONTROL  [initandlisten]
2015-05-04T14:43:07.257+0800 I CONTROL  [initandlisten] targetMinOS: Windows 7/Windows Server 2008 R2
2015-05-04T14:43:07.260+0800 I CONTROL  [initandlisten] db version v3.1.2
2015-05-04T14:43:07.262+0800 I CONTROL  [initandlisten] git version: aa0066050f0a9db81aa47181d0fbd18c109ae991
2015-05-04T14:43:07.266+0800 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.1m-fips 19 Mar 2015
2015-05-04T14:43:07.267+0800 I CONTROL  [initandlisten] build info: windows sys.getwindowsversion(major=6, minor=1, build=7601, platform=2, service_pack='Service Pack 1')
BOOST_LIB_VERSION=1_56
2015-05-04T14:43:07.272+0800 I CONTROL  [initandlisten] allocator: system
2015-05-04T14:43:07.274+0800 I CONTROL  [initandlisten] options: { storage: { dbPath: "D:\Program Files\mongodb\data\db" } }
2015-05-04T14:43:07.280+0800 I INDEX    [initandlisten] allocating new ns file D:\Program Files\mongodb\data\db\local.ns, filling with zeroes...
2015-05-04T14:43:07.543+0800 I STORAGE  [FileAllocator] allocating new datafile D:\Program Files\mongodb\data\db\local.0, filling with zeroes...
2015-05-04T14:43:07.544+0800 I STORAGE  [FileAllocator] creating directory D:\Program Files\mongodb\data\db\_tmp
2015-05-04T14:43:07.746+0800 I STORAGE  [FileAllocator] done allocating datafile D:\Program Files\mongodb\data\db\local.0, size: 64MB,  took 0.198 secs
2015-05-04T14:43:07.754+0800 I NETWORK  [initandlisten] waiting for connections on port 27017

执行此命令即将mongodb的数据库文件创建到D:\Program Files\mongodb\data\db 目录,不出意外的会看到命令最后一行sucess的成功提

此时数据库就已启动,该界面为Mongo的启动程序,关闭后可直接双击bin下的mongod.exe  (注意是d,这个是启动程序)

 
3.1.2 启动程序开启后,再运行mongo.exe 程序


  输入exit或者ctrl+C可退出。

 3.1.3 当mongod.exe被关闭时,mongo.exe 就无法连接到数据库了,因此每次想使用mongodb数据库都要开启mongod.exe程序,所以比较麻烦,此时我们可以将MongoDB安装为windows服务

 还是运行cmd,进入bin文件夹,执行下列命令

 > d:\mongodb\bin>mongod --dbpath "D:\Program Files\mongodb\data\db" --logpath "D:\Program Files\mongodb\data\log\MongoDB.log" --install --serviceName "MongoDB"  --port 27018  --bind_ip=192.168.0.56  --auth

 这里MongoDB.log就是开始建立的日志文件,--serviceName "MongoDB" 服务名为MongoDB

 接着启动mongodb服务

D:\Program Files\mongodb\Server\3.1\bin>net start  MongoDB
MongoDB 服务正在启动 .
MongoDB 服务已经启动成功。

关闭mongodb:
 
> db.shutdownServer()

 打开任务管理器,可以看到进程已经启动


3.1.4 .关闭服务和删除进程

 > d:\mongodb\bin>NET stop MongoDB   (关闭服务)

 > d:\mongodb\bin>mongod --dbpath "D:\Program Files\mongodb\data\db" --logpath "D:\Program Files\mongodb\data\log\MongoDB.log" --remove --serviceName "MongoDB"      (删除,注意不是--install了) 

-------------------------------------------------------------------------------------------------------------------

三、mongodb 安装for  linux

1. 设置MongoDB存放的目录 将其解压到/apps,在重命名为mongo ,路径为 /apps/mongo

 [root@node1 /]# mkdir apps
 [root@node1 apps]# chmod -R 755 /apps
 [root@node1 apps]# ll
 total 49308
 -rwxr-xr-x 1 root root 50432804 May  3 12:48 mongodb-linux-x86_64-rhel55-3.0.2.gz

 1.1解压: mongodb-linux-x86_64-rhel55-3.0.2.gz
[root@node1 apps]# tar -zxvf mongodb-linux-x86_64-rhel55-3.0.2.gz
mongodb-linux-x86_64-rhel55-3.0.2/README
mongodb-linux-x86_64-rhel55-3.0.2/THIRD-PARTY-NOTICES
mongodb-linux-x86_64-rhel55-3.0.2/GNU-AGPL-3.0
mongodb-linux-x86_64-rhel55-3.0.2/bin/mongodump
mongodb-linux-x86_64-rhel55-3.0.2/bin/mongorestore
mongodb-linux-x86_64-rhel55-3.0.2/bin/mongoexport
mongodb-linux-x86_64-rhel55-3.0.2/bin/mongoimport
mongodb-linux-x86_64-rhel55-3.0.2/bin/mongostat
mongodb-linux-x86_64-rhel55-3.0.2/bin/mongotop
mongodb-linux-x86_64-rhel55-3.0.2/bin/bsondump
mongodb-linux-x86_64-rhel55-3.0.2/bin/mongofiles
mongodb-linux-x86_64-rhel55-3.0.2/bin/mongooplog
mongodb-linux-x86_64-rhel55-3.0.2/bin/mongoperf
mongodb-linux-x86_64-rhel55-3.0.2/bin/mongod
mongodb-linux-x86_64-rhel55-3.0.2/bin/mongos
mongodb-linux-x86_64-rhel55-3.0.2/bin/mongo

1.2 将解压后的mongodb-linux-x86_64-rhel55-3.0.2 mongo 文件夹更名为mongo

 [root@node1 apps]# mv mongodb-linux-x86_64-rhel55-3.0.2 mongo

[root@node1 apps]# ll
total 49312
drwxr-xr-x 3 root root     4096 May  3 12:50 mongo

 2.设置数据文件存放的位置

      2.1  创建/data/db的目录,
       [root@node1 apps]# mkdir -p  /data/db
       [root@node1 apps]#         chmod -R 755 /data

 3.启动MongoDB的服务

 /apps/mongo/bin/mongod  --dbpath=/data/db
[root@node1 bin]# /apps/mongo/bin/mongod  --dbpath=/data/db
2015-05-03T12:58:37.571+0800 I JOURNAL  [initandlisten] journal dir=/data/db/journal
2015-05-03T12:58:37.571+0800 I JOURNAL  [initandlisten] recover : no journal files present, no recovery needed
2015-05-03T12:58:38.178+0800 I JOURNAL  [durability] Durability thread started
2015-05-03T12:58:38.178+0800 I JOURNAL  [journal writer] Journal writer thread started
2015-05-03T12:58:38.178+0800 I CONTROL  [initandlisten] MongoDB starting : pid=3419 port=27017 dbpath=/data/db 64-bit host=node1
2015-05-03T12:58:38.178+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2015-05-03T12:58:38.178+0800 I CONTROL  [initandlisten]
2015-05-03T12:58:38.179+0800 I CONTROL  [initandlisten] db version v3.0.2
2015-05-03T12:58:38.179+0800 I CONTROL  [initandlisten] git version: 6201872043ecbbc0a4cc169b5482dcf385fc464f
2015-05-03T12:58:38.179+0800 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008
2015-05-03T12:58:38.179+0800 I CONTROL  [initandlisten] build info: Linux build16.nj1.10gen.cc 2.6.32-431.3.1.el6.x86_64 #1 SMP Fri Jan 3 21:39:27 UTC 2014 x86_64 BOOST_LIB_VERSION=1_49
2015-05-03T12:58:38.179+0800 I CONTROL  [initandlisten] allocator: tcmalloc
2015-05-03T12:58:38.179+0800 I CONTROL  [initandlisten] options: { storage: { dbPath: "/data/db" } }
2015-05-03T12:58:38.180+0800 I INDEX    [initandlisten] allocating new ns file /data/db/local.ns, filling with zeroes...
2015-05-03T12:58:38.400+0800 I STORAGE  [FileAllocator] allocating new datafile /data/db/local.0, filling with zeroes...
2015-05-03T12:58:38.400+0800 I STORAGE  [FileAllocator] creating directory /data/db/_tmp
2015-05-03T12:58:38.780+0800 I STORAGE  [FileAllocator] done allocating datafile /data/db/local.0, size: 64MB,  took 0.377 secs
2015-05-03T12:58:38.788+0800 I NETWORK  [initandlisten] waiting for connections on port 27017

 4.将MongoDB作为Linux服务随机启动

    4.1 先创建/apps/mongo/logs/mongodb.log  文件,存放mongodb的日志;
    4.2  vi/etc/rc.local  添加下面的代码
      apps/mongo/bin/mongod  --dbpath=/data/db --logpath=/apps/mongo/logs/mongodb.log
    5.客户端连接验证
       打开一个session输入: /apps/mongo/bin/mongo
    6.查看MongoDB日志


5.卸载mongodb

  5.1. 关闭 mongodb的服务
  5.2. 删除mongodb所需要的文件  rm -rf /apps   & rm -rf /data
  5.3  vi/etc/rc.local  删除    apps/mongo/bin/mongod  --dbpath=/data/db --logpath=/apps/mongo/logs/mongodb.log 这一条记录

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

四、使用mongodb


1.常用的命令

  • show dbs    显示数据库列表
  • use dbname    进入dbname数据库,大小写敏感,没有这个数据库也不要紧
  • show collections    显示数据库中的集合,相当于表格
2. insert 操作

D:\Program Files\mongodb\Server\3.1\bin>mongo
2015-05-04T15:19:24.349+0800 I CONTROL  Hotfix KB2731284 or later update is not installed, will zero-out data files
MongoDB shell version: 3.1.2
connecting to: test  默认连接的是test数据库
Server has startup warnings:
2015-05-04T14:56:11.422+0800 I CONTROL  [initandlisten]
2015-05-04T14:56:11.422+0800 I CONTROL  [initandlisten] ** NOTE: This is a development version (3.1.2) of MongoDB.
2015-05-04T14:56:11.422+0800 I CONTROL  [initandlisten] **       Not recommended for production.
2015-05-04T14:56:11.422+0800 I CONTROL  [initandlisten]


 下一步就是集合,这里就取集合名为“person”,要注意的就是文档是一个json的扩展(Bson)形式。

db.persion.insert({"name":"zw","age":20})
db.persion.insert({"name":"zt","age":18})

3. find 操作

       我们将数据插入后,肯定是要find出来,不然插了也白插,这里要注意两点:

        ① “_id": 这个字段是数据库默认给我们加的GUID,目的就是保证数据的唯一性。

        ② 严格的按照Bson的形式书写文档,不过也没关系,错误提示还是很强大的。


db.persion.find()
{ "_id" : ObjectId("55471e56dd647b87c8344720"), "name" : "zw", "age" : 20 }
{ "_id" : ObjectId("55471e5ddd647b87c8344721"), "name" : "zt", "age" : 18 }

var cursor=db.persion.find()   --while 输出
while(cursor.hasNext())printjson(cursor.next())

上面的例子显示了游标风格的迭代输出.  hasNext()  函数告诉我们是否还有数据,  如果有则
可以调用  next()  函数. 

db.persion.find( {"name" : "zt"})
{ "_id" : ObjectId("55471e5ddd647b87c8344721"), "name" : "zt", "age" : 18 }


使用  forEach()  来循环输出:    forEach()  必须定义一个函数供每个游标元素调用.
> db.persion.find().forEach(printjson)
{ "_id" : ObjectId("55471e5ddd647b87c8344721"), "name" : "zt", "age" : 18 }
{ "_id" : ObjectId("55472415dd647b87c8344724"), "name" : "zw", "age" : 20 }


在  MongoDB shell  里,  我们也可以把游标当作数组来用:
> var cursor = db.persion.find(); 
 >  printjson(cursor[1]);
{ "_id" : ObjectId("55472415dd647b87c8344724"), "name" : "zw", "age" : 20 }

使用游标时候请注意占用内存的问题,  特别是很大的游标对象,  有可能会内存溢出.  所以应
该用迭代的方式来输出.  下面的示例则是把游标转换成真实的数组类型: 
> var arr = db.persion.find().toArray();
> arr[1];
{ "_id" : ObjectId("55472415dd647b87c8344724"), "name" : "zw", "age" : 20 }


db.persion.findOne()  --查找第一条数据

4.update 操作


 update方法的第一个参数为“查找的条件”,第二个参数为“更新的值”,学过C#,相信还是很好理解的。


db.persion.update({"name":"zw"},{"name":"zw","age":26})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.persion.find()
{ "_id" : ObjectId("55471e56dd647b87c8344720"), "name" : "zw", "age" : 26 }


5.remove操作

remove中如果不带参数将删除所有数据,呵呵,很危险的操作,在mongodb中是一个不可撤回的操作,三思而后行。

db.persion.remove({"name":"zw"})
WriteResult({ "nRemoved" : 1 })
> db.persion.find()
{ "_id" : ObjectId("55471e5ddd647b87c8344721"), "name" : "zt", "age" : 18 }
 

 

0 0