windows环境下安装mongodb以及nosql使用

http://www.xiaocai.name/emlog/post/35

mongoDB(http://www.mongodb.org)是一种 NoSQL 的文档型的数据库管理系统,也就是说不是传统意义上的关系数据库(类似 Oracle、MS-SQLServer、MySQL等)。传统意义上的关系数据库,数据是被编码为二进制格式保存在表中的,需要用 SQL 语句去存取。 NoSQL 的文档型数据库,比如 mongoDB,就不同了。(官网)

1.安装MongoDB.

下载mongodb-win32-i386-1.4.0.zip文件(地址:http://downloads.mongodb.org/win32/mongodb-win32-i386-1.4.0.zip),将其解压至D:\mongodb目录中.创建D:\mongodb\data目录(用于存放数据库文件).

注:BIN目录中有以下2个文件,mongod.exe即服务器端,mongo.exe客服端(在php中用来连接mongodb它进行查询)

打开一个CMD,进入D:\mongodb\bin 目录,运行mongo.exe文件,出现下面的提示就安装成功了(这样就安装成功了o(╯□╰)o).

MongoDB shell version: 1.6.3
connecting to: test


2.运行MongoDB

首先我们先运行服务端,打开一个CMD,输入d:\mongodb\bin\mongod.exe --dbpath d:\mongodb\data,这时候可以看到以下界面.(不要关掉它,将它注册为系统服务这样就不用每次启动它了).

接着打开一个新的CMD控制台,进入d:\mongodb\bin目录运行mongo.exe文件。

下面就可以开始写代码了..(不载图了..太麻烦o(╯□╰)o)

 > show dbs  ;显示所有数据库(默认连接的是test数据库)

结果:
    admin
    local
    test


> show collections    ;显示当前数据库下的使有表

结果:

system.indexes

system.users

test

user

xc



> db.xiaocai.insert({name:'xiaocai1',age:'21'})    ;向xiaocai表中插入数据(若表不存在则会自动创建)

> db.xiaocai.find()    ;显示xiaocai表中的所有数据

结果:

{ "_id" : ObjectId("4d5cdd0fdf70000000001560"), "name" : "xiaocai1", "age" : "21" }

> db.xiaocai.remove({name:"xiaocai1"})    ;删除name字段为'xiaocai'的数据

> db.xiaocao.find()


下面重点说明一下update

db.collection.update( criteria, objNew, upsert, multi )
criteria : update的查询条件,类似sql update查询内where后面的
objNew   : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
upsert   : 这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi    : mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。

db.test0.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } ); 只更新了第一条记录
db.test0.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true ); 全更新了
db.test0.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false ); 只加进去了第一条
db.test0.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true ); 全加进去了
db.test0.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );全更新了
db.test0.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );只更新了第一条

对应的SQL参考:

select a,b from users where age=33

db.users.find({age:33},{a:1,b:1})

select * from users where age>33 and age<=40

db.users.find({'age':{$gt:33,$lte:40}})

select * from users order by name DESC

db.users.find().sort({name:-1})

create index myindexname on users(name)

db.users.ensureIndex({name:1})

update users set a=1 where b='q'

db.users.update({b: 'q'},{$set:{a:1}},false,true)

delete from users where z='abc'

db.users.remove({ z: 'abc'})

3.PHP操作MongoDB

安装MongoDB PHP扩展,下载地址:http://github.com/mongodb/mongo-php-driver/downloads(apache 下载V6,iis下载V9),将解压得到的php_mongo.dll 文件拷贝到 PHP 安装目录下的 ext 目录下。在PHP.INI加入extension = php_mongo.dll;重启apache后可以在phpinfo中找到mongo的信息.

新建一个php文件,新增几条记录并显示.

  1. $conn = new Mongo("mongodb://admin_miss:miss@localhost/test");  
  2. $db = $conn->test;       //选择test数据库    
  3. $collection = $db->xiaocai;  //若此表不存在则会自行创建  
  4. $collection->insert(array('name'=>'aaa','age'=>'21'));  
  5. $collection->insert(array('name'=>'bbb','age'=>'20'));  
  6. $collection->insert(array('name'=>'ccc','age'=>'25'));  
  7.   
  8. $array=array();  
  9. foreach ($collection->find() as $val){  
  10.      $array[]=$val;  
  11. }  
  12. print_r($array);  


将age为20岁的数据name更新为'edit'

  1. $collection->update(array('age'=>20),array('$set'=>array('name'=>'edit')),false);  
  2. //不能写出$collection->update(array('age'=>20),array('name'=>'edit'),false);  


删除数据:

  1. $collection->remove(array('age'=>20));  

资料:

  1. //连接localhost:27017    
  2. $conn = new Mongo();    
  3. //连接远程主机默认端口    
  4. $conn = new Mongo('test.com');    
  5. //连接远程主机22011端口    
  6. $conn = new Mongo('test.com:22011');    
  7. //MongoDB有用户名密码    
  8. $conn = new Mongo("mongodb://${username}:${password}@localhost")    
  9. //MongoDB有用户名密码并指定数据库blog    
  10. $conn = new Mongo("mongodb://${username}:${password}@localhost/blog");    
  11. //多个服务器    
  12. $conn = new Mongo("mongodb://localhost:27017,localhost:27018");    

http://hi.baidu.com/farmerluo/blog/item/9a23cb13a819bb2fdd540188.html
http://www.searchtb.com/2010/12/a-probe-into-the-mongodb.html
http://www.infoq.com/cn/news/2011/01/nosql-why
http://www.infoq.com/cn/news/2011/01/relation-db-nosql-db
可视化工具:
posted @ 2011-07-15 15:44  董雨  阅读(407)  评论(0编辑  收藏  举报