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文件,新增几条记录并显示.
- $conn = new Mongo("mongodb://admin_miss:miss@localhost/test");
- $db = $conn->test; //选择test数据库
- $collection = $db->xiaocai; //若此表不存在则会自行创建
- $collection->insert(array('name'=>'aaa','age'=>'21'));
- $collection->insert(array('name'=>'bbb','age'=>'20'));
- $collection->insert(array('name'=>'ccc','age'=>'25'));
- $array=array();
- foreach ($collection->find() as $val){
- $array[]=$val;
- }
- print_r($array);
将age为20岁的数据name更新为'edit'
- $collection->update(array('age'=>20),array('$set'=>array('name'=>'edit')),false);
- //不能写出$collection->update(array('age'=>20),array('name'=>'edit'),false);
删除数据:
- $collection->remove(array('age'=>20));
资料:
- //连接localhost:27017
- $conn = new Mongo();
- //连接远程主机默认端口
- $conn = new Mongo('test.com');
- //连接远程主机22011端口
- $conn = new Mongo('test.com:22011');
- //MongoDB有用户名密码
- $conn = new Mongo("mongodb://${username}:${password}@localhost")
- //MongoDB有用户名密码并指定数据库blog
- $conn = new Mongo("mongodb://${username}:${password}@localhost/blog");
- //多个服务器
- $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