导航:首页 > 编程语言 > phpmongodb手册

phpmongodb手册

发布时间:2022-09-06 21:31:08

㈠ thinkphp 怎么用mongodb作为辅助数据库

㈡ php 远程连接Mongodb问题

<?php //这里采用默认连接本机的27017端口,当然你也可以连接远程主机如192.168.0.4:27017,如果端口是27017,端口可以省略 $m = new Mongo(); // 选择comedy数据库,如果以前没该数据库会自动创建,也可以用$m->selectDB("comedy"); $db = $m->comedy; //选择comedy里面的collection集合,相当于RDBMS里面的表,也-可以使用 $collection = $db->collection; $db->selectCollection("collection"); //添加一个元素 $obj = array( "title" => "Calvin and Hobbes-".date('i:s'), "author" => "Bill Watterson" ); //将$obj 添加到$collection 集合中 $collection->insert($obj); //添加另一个元素 $obj = array( "title" => "XKCD-".date('i:s'), "online" => true ); $collection->insert($obj); //查询所有的记录 $cursor = $collection->find(); //遍历所有集合中的文档 foreach ($cursor as $obj) { echo $obj["title"] . "<br />\n"; } //删除所有数据 //$collection->remove(); //删除 name 为hm //$collection->remove(array('name'=>'hm')); //断开MongoDB连接 $m->close(); ?>
你可以去后盾人平台看看,里面的东西不错

㈢ 如何为PHP安装mongodb的扩展

1.首先下载php的mongodb扩展
从http://pecl.php.net/package/mongo这个网址下载mongodb的扩展源码

1

wget http://pecl.php.net/get/mongo-1.4.5.tgz

2.解压安装包

1

tar zxf mongo-1.4.5.tgz

3.进入解压目录,运行phpize进行安装准备

1
2

cd mongo-1.4.5
/usr/local/php/bin/phpize

4.安装编译
上述命令运行完后,在目录下就生成了configure文件
使用./configure命令进行安装配置,然后使用make && make install进行编译安装,命令如下:

1
2

./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

5.编辑php.ini增加下述一行添加mongodb扩展

1

extension=mongo.so

重启web容器,然后查看phpinfo,看到mongodb的内容就说明安装成功。

㈣ php操作mongoDB数据库查询的时候怎样写“或”这样的多个条件查询代码

据我所知,目前mongoDB没有“或”这个东西

但我刚才在网上查了下
发现了下面的信息,你参考下吧

在mongodb中有$or 操作符的,官网中给出的例子如下:

Simple:

db.foo.find( { $or : [ { a : 1 } , { b : 2 } ] } )

With another field

db.foo.find( { name : "bob" , $or : [ { a : 1 } , { b : 2 } ] } )

The $or operator retrieves matches for each or clause indivially and eliminates plicates when returning results. A number of $or optimizations are planned for 1.8. See this thread for details.
$or cannot be nested.

㈤ mongodb 请问php中的这句mysql语法,在mongodb中如何写。

查询:
MySQL:
SELECT * FROM user
Mongo:
db.user.find()
MySQL:
SELECT * FROM user WHERE name = 'starlee'
Mongo:
db.user.find({‘name' : 'starlee'})
插入:
MySQL:
INSERT INOT user (`name`, `age`) values ('starlee',25)
Mongo:
db.user.insert({‘name' : 'starlee', ‘age' : 25})
如果你想在MySQL里添加一个字段,你必须:
ALTER TABLE user….
但在MongoDB里你只需要:
db.user.insert({‘name' : 'starlee', ‘age' : 25, ‘email' : '[email protected]'})
删除:
MySQL:
DELETE * FROM user
Mongo:
db.user.remove({})
MySQL:
DELETE FROM user WHERE age < 30
Mongo:
db.user.remove({‘age' : {$lt : 30}})
$gt : > ; $gte : >= ; $lt : < ; $lte : <= ; $ne : !=
更新:
MySQL:
UPDATE user SET `age` = 36 WHERE `name` = 'starlee'
Mongo:
db.user.update({‘name' : 'starlee'}, {$set : {‘age' : 36}})
MySQL:
UPDATE user SET `age` = `age` + 3 WHERE `name` = 'starlee'
Mongo:
db.user.update({‘name' : 'starlee'}, {$inc : {‘age' : 3}})
MySQL:
SELECT COUNT(*) FROM user WHERE `name` = 'starlee'
Mongo:
db.user.find({‘name' : 'starlee'}).count()
MySQL:
SELECT * FROM user limit 10,20
Mongo:
db.user.find().skip(10).limit(20)
MySQL:
SELECT * FROM user WHERE `age` IN (25, 35,45)
Mongo:
db.user.find({‘age' : {$in : [25, 35, 45]}})
MySQL:
SELECT * FROM user ORDER BY age DESC
Mongo:
db.user.find().sort({‘age' : -1})
MySQL:
SELECT DISTINCT(name) FROM user WHERE age > 20
Mongo:
db.user.distinct(‘name', {‘age': {$lt : 20}})
MySQL:
SELECT name, sum(marks) FROM user GROUP BY name
Mongo:
db.user.group({
key : {‘name' : true},
cond: {‘name' : ‘foo'},
rece: function(obj,prev) { prev.msum += obj.marks; },
initial: {msum : 0}
});
MySQL:
SELECT name FROM user WHERE age < 20
Mongo:
db.user.find(‘this.age < 20′, {name : 1})
发现很多人在搜MongoDB循环插入数据,下面把MongoDB循环插入数据的方法添加在下面:
for(var i=0;i<100;i++)db.test.insert({uid:i,uname:'nosqlfan'+i});
上面一次性插入一百条数据,大概结构如下:
{ “_id” : ObjectId(“4c876e519e86023a30dde6b8″), “uid” : 55, “uname” : “nosqlfan55″ }
{ “_id” : ObjectId(“4c876e519e86023a30dde6b9″), “uid” : 56, “uname” : “nosqlfan56″ }
{ “_id” : ObjectId(“4c876e519e86023a30dde6ba”), “uid” : 57, “uname” : “nosqlfan57″ }
{ “_id” : ObjectId(“4c876e519e86023a30dde6bb”), “uid” : 58, “uname” : “nosqlfan58″ }
{ “_id” : ObjectId(“4c876e519e86023a30dde6bc”), “uid” : 59, “uname” : “nosqlfan59″ }
{ “_id” : ObjectId(“4c876e519e86023a30dde6bd”), “uid” : 60, “uname” : “nosqlfan60″ }
简易对照表
SQL Statement Mongo Query Language Statement
CREATE TABLE USERS (a Number, b Number) implicit; can be done explicitly
INSERT INTO USERS VALUES(1,1) db.users.insert({a:1,b:1})
SELECT a,b FROM users db.users.find({}, {a:1,b:1})
SELECT * FROM users db.users.find()
SELECT * FROM users WHERE age=33 db.users.find({age:33})
SELECT a,b FROM users WHERE age=33 db.users.find({age:33}, {a:1,b:1})
SELECT * FROM users WHERE age=33 ORDER BY name db.users.find({age:33}).sort({name:1})
SELECT * FROM users WHERE age>33 db.users.find({'age':{$gt:33}})})
SELECT * FROM users WHERE age<33 db.users.find({'age':{$lt:33}})})
SELECT * FROM users WHERE name LIKE "%Joe%" db.users.find({name:/Joe/})
SELECT * FROM users WHERE name LIKE "Joe%" db.users.find({name:/^Joe/})
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})
CREATE INDEX myindexname ON users(name,ts DESC) db.users.ensureIndex({name:1,ts:-1})
SELECT * FROM users WHERE a=1 and b='q' db.users.find({a:1,b:'q'})
SELECT * FROM users LIMIT 10 SKIP 20 db.users.find().limit(10).skip(20)
SELECT * FROM users WHERE a=1 or b=2 db.users.find( { $or : [ { a : 1 } , { b : 2 } ] } )
SELECT * FROM users LIMIT 1 db.users.findOne()
EXPLAIN SELECT * FROM users WHERE z=3 db.users.find({z:3}).explain()
SELECT DISTINCT last_name FROM users db.users.distinct('last_name')
SELECT COUNT(*y) FROM users db.users.count()
SELECT COUNT(*y) FROM users where AGE > 30 db.users.find({age: {'$gt': 30}}).count()
SELECT COUNT(AGE) from users db.users.find({age: {'$exists': true}}).count()
UPDATE users SET a=1 WHERE b='q' db.users.update({b:'q'}, {$set:{a:1}}, false, true)
UPDATE users SET a=a+2 WHERE b='q' db.users.update({b:'q'}, {$inc:{a:2}}, false, true)
DELETE FROM users WHERE z="abc" db.users.remove({z:'abc'});
###################################################
一、操作符
操作符相信大家肯定都知道了,就是等于、大于、小于、不等于、大于等于、小于等于,但是在mongodb里不能直接使用这些操作符。在mongodb里的操作符是这样表示的:
(1) $gt > (大于)
(2) $lt< (小于)
(3) $gte>= (大于等于)
(4) $lt<= (小于等于)
(5) $ne!= (不等于)
(6) $inin (包含)
(7) $ninnot in (不包含)
(8) $existsexist (字段是否存在)
(9) $inc对一个数字字段field增加value
(10) $set就是相当于sql的set field = value
(11) $unset就是删除字段
(12) $push把value追加到field里面去,field一定要是数组类型才行,如果field不存在,会新增一个数组类型加进去
(13) $pushAll同$push,只是一次可以追加多个值到一个数组字段内
(14) $addToSet增加一个值到数组内,而且只有当这个值不在数组内才增加。
(15) $pop删除最后一个值:{ $pop : { field : 1 } }删除第一个值:{ $pop : { field : -1 } }注意,只能删除一个值,也就是说只能用1或-1,而不能用2或-2来删除两条。mongodb 1.1及以后的版本才可以用
(16) $pull从数组field内删除一个等于value值
(17) $pullAll同$pull,可以一次删除数组内的多个值
(18) $ 操作符是他自己的意思,代表按条件找出的数组里面某项他自己。这个比较坳口,就不说了。
二、CURD 增、改、读、删
增加

复制代码代码如下:

db.collection->insert({'name' => 'caleng', 'email' => 'admin#admin.com'});

是不是灰常简单呀,对就是这么简单,它没有字段的限制,你可以随意起名,并插入数据

复制代码代码如下:

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

查询

复制代码代码如下:

db.collection.find(array('name' => 'ling'), array('email'=>'[email protected]'))
db.collection.findOne(array('name' => 'ling'), array('email''[email protected]'))

大家可以看到查询我用了两种不同的写法,这是为什么,其实这跟做菜是一样的,放不同的调料,炒出的菜是不同的味道。下面给大家说一下,这两种调料的不同作用。
findOne()只返回一个文档对象,find()返回一个集合列表。
也就是说比如,我们只想查某一条特定数据的详细信息的话,我们就可以用findOne();
如果想查询某一组信息,比如说一个新闻列表的时候,我们就可以作用find();
那么我想大家这时一定会想到我想对这一个列表排序呢,no problem mongodb会为您全心全意服务

复制代码代码如下:

db.collection.find().sort({age:1}); //按照age正序排列
db.collection.find().sort({age:-1}); //按照age倒序排列
db.collection.count(); //得到数据总数
db.collection.limit(1); //取数据的开始位置
db.collection.skip(10); //取数据的结束位置
//这样我们就实现了一个取10条数据,并排序的操作。

删除
删除有两个操作 remove()和drop()

复制代码代码如下:

db.collection.remove({"name",'jerry'}) //删除特定数据
db.collection.drop() //删除集合内的所有数据

distinct操作

复制代码代码如下:

db.user.distinct('name', {'age': {$lt : 20}})

2. 熟悉MongoDB的数据操作语句,类sql
数据库操作语法
mongo --path
db.AddUser(username,password) 添加用户
db.auth(usrename,password) 设置数据库连接验证
db.cloneDataBase(fromhost) 从目标服务器克隆一个数据库
db.commandHelp(name) returns the help for the command
db.Database(fromdb,todb,fromhost) 复制数据库fromdb---源数据库名称,todb---目标数据库名称,fromhost---源数据库服务器地址
db.createCollection(name,{size:3333,capped:333,max:88888}) 创建一个数据集,相当于一个表
db.currentOp() 取消当前库的当前操作
db.dropDataBase() 删除当前数据库
db.eval(func,args) run code server-side
db.getCollection(cname) 取得一个数据集合,同用法:db['cname'] or db.cname
db.getCollenctionNames() 取得所有数据集合的名称列表
db.getLastError() 返回最后一个错误的提示消息
db.getLastErrorObj() 返回最后一个错误的对象
db.getMongo() 取得当前服务器的连接对象get the server connection object
db.getMondo().setSlaveOk() allow this connection to read from then nonmaster membr of a replica pair
db.getName() 返回当操作数据库的名称
db.getPrevError() 返回上一个错误对象
db.getProfilingLevel() ?什么等级
db.getReplicationInfo() ?什么信息
db.getSisterDB(name) get the db at the same server as this onew
db.killOp() 停止(杀死)在当前库的当前操作
db.printCollectionStats() 返回当前库的数据集状态
db.printReplicationInfo()
db.printSlaveReplicationInfo()
db.printShardingStatus() 返回当前数据库是否为共享数据库
db.removeUser(username) 删除用户
db.repairDatabase() 修复当前数据库
db.resetError()
db.runCommand(cmdObj) run a database command. if cmdObj is a string, turns it into {cmdObj:1}
db.setProfilingLevel(level) 0=off,1=slow,2=all
db.shutdownServer() 关闭当前服务程序
db.version() 返回当前程序的版本信息
数据集(表)操作语法
db.linlin.find({id:10}) 返回linlin数据集ID=10的数据集
db.linlin.find({id:10}).count() 返回linlin数据集ID=10的数据总数
db.linlin.find({id:10}).limit(2) 返回linlin数据集ID=10的数据集从第二条开始的数据集
db.linlin.find({id:10}).skip(8) 返回linlin数据集ID=10的数据集从0到第八条的数据集
db.linlin.find({id:10}).limit(2).skip(8) 返回linlin数据集ID=1=的数据集从第二条到第八条的数据
db.linlin.find({id:10}).sort() 返回linlin数据集ID=10的排序数据集
db.linlin.findOne([query]) 返回符合条件的一条数据
db.linlin.getDB() 返回此数据集所属的数据库名称
db.linlin.getIndexes() 返回些数据集的索引信息
db.linlin.group({key:...,initial:...,rece:...[,cond:...]})
db.linlin.mapRece(mayFunction,receFunction,<optional params>)
db.linlin.remove(query) 在数据集中删除一条数据
db.linlin.renameCollection(newName) 重命名些数据集名称
db.linlin.save(obj) 往数据集中插入一条数据
db.linlin.stats() 返回此数据集的状态
db.linlin.storageSize() 返回此数据集的存储大小
db.linlin.totalIndexSize() 返回此数据集的索引文件大小
db.linlin.totalSize() 返回些数据集的总大小
db.linlin.update(query,object[,upsert_bool]) 在此数据集中更新一条数据
db.linlin.validate() 验证此数据集
db.linlin.getShardVersion() 返回数据集共享版本号

㈥ mongo php 操作 怎样更新一条数据

PHP操作MongoDB数据库的简单示例。
Mongodb的常用操作
参看手册,php官方的http://us2.php.net/manual/en/mongo.manual.php
也可以参看mongodb官方的教程。
一,Mognodb数据库连接
1)、默认格式

复制代码代码示例:
$m=newMongo();
//这里采用默认连接本机的27017端口,当然也可以连接远程主机如192.168.0.4:27017,如果端口是27017,端口可以省略。
2)、标准连接
$m=newMongo(“mongodb://${username}:${password}@localhost”);
实例:
复制代码代码示例:
$m=newMongo(“mongodb://127.0.0.1:27017/admin:admin”);

数据库的用户名和密码都是admin
数据库操作:
1)、插入数据:

复制代码代码示例:
<?php
//这里采用默认连接本机的27017端口,当然你也可以连接远程主机如192.168.0.4:27017
//如果端口是27017,端口可以省略
$m=newMongo("mongodb://127.0.0.1:27017/admin:admin");
//选择comedy数据库,如果以前没该数据库会自动创建,也可以用$m->selectDB("comedy");
$db=$m->comedy;
//选择comedy里面的collection集合,相当于RDBMS里面的表,也可以使用
$collection=$db->collection;
$db->selectCollection("collection");
/*********添加一个元素**************/
$obj=array("title"=>"php1","author"=>"BillWatterson");
//将$obj添加到$collection集合中
$collection->insert($obj);
/*********添加另一个元素**************/
$obj=array("title"=>"huaibei","online"=>true);
$collection->insert($obj);
//$query=array("title"=>"huaibei");
$query=array("_id"=>$obj['_id']);
$cursor=$collection->find($query);
//遍历所有集合中的文档
foreach($cursoras$obj){
echo$obj["title"]." ";
echo$obj["_id"]." ";
}
//断开MongoDB连接
$m->close();
2)、带条件的查询
查询title为huaibei的字段
1$query=array(”title”=>”huaibei”);
2$cursor=$collection->find($query);//在$collectio集合中查找满足$query的文档
常用的SQL转化为mongodb的条件

复制代码代码示例:
mysql:id=123
mongo:array(‘id’=>123)
mysql:namelink’%bar%’
mongo:array(‘name’=>newMongoRegex(‘/.*bar.*/i’))
mysql:whereid>10
mongo:array(‘id’=>array(‘$gt’=>10))
mysql:whereid>=10
mongo:array(‘id’=>array(‘$gte’=>10))
mysql:whereid<10
mongo:array(‘id’=>array(‘$lt’=>10))
mysql:whereid<=10
mongo:array(‘id’=>array(‘$lte’=>10))
mysql:whereid>1andid<10
mongo:array(‘id’=>array(‘$gt’=>1,’$lt’=>10))
mysql:whereid<>10
mongo:array(‘id’=>array(‘$ne’=>10))
mysql:whereidin(123)
mongo:array(‘id’=>array(‘$in’=>array(1,2,3)))
mysql:whereidnotin(123)
mongo:array(‘id’=>array(‘$nin’=>array(1,2,3)))
mysql:whereid=2orid=9
mongo:array(‘id’=>array(‘$or’=>array(array(‘id’=>2),array(‘id’=>9))))
mysql:orderbynameasc
mongo:array(‘sort’=>array(‘name’=>1))
mysql:orderbynamedesc
mongo:array(‘sort’=>array(‘name’=>-1))
mysql:limit0,2
mongo:array(‘limit’=>array(‘offset’=>0,’rows’=>2))
mysql:selectname,email
mongo:array(‘name’,'email’)
mysql:selectcount(name)
mongo:array(‘COUNT’)//注意:COUNT为大写

更详细的转换参考http://us2.php.net/manual/en/mongo.sqltomongo.php
注意事项:
查询时,每个Object插入时都会自动生成一个独特的_id,它相当于RDBMS中的主键,用于查询时非常方便(_id每一都不同,很像自动增加的id)
例如:

复制代码代码示例:
<?php
$param=array("name"=>"joe");
$collection->insert($param);
$joe=$collection->findOne(array("_id"=>$param['_id']));
print_R($joe);
$m->close();

返回结果:Array([_id]=>MongoIdObject([$id]=>4fd30e21870da83416000002)[name]=>joe)
更改字段值:

复制代码代码示例:
<?php
$sign=array("title"=>'php1');
$param=array("title"=>'php1','author'=>'test');
$joe=$collection->update($sign,$param);
删除一个数据库:

复制代码代码示例:
$m->dropDB(“comedy”);
列出所有可用数据库:

复制代码代码示例:
$m->listDBs();//无返回值
附,mongodb常用的数据库方法
MongoDB中有用的函数:
创建一个MongoDB对象

复制代码代码示例:
<?php
$mo=newMongo();
$db=newMongoDB($mo,’dbname’);//通过创建方式获得一个MongoDB对象
删除当前DB

复制代码代码示例:
<?php
$db=$mo->dbname;
$db->drop();
获得当前数据库名

复制代码代码示例:
<?php
$db=$mo->dbname;
$db->_tostring();
选择想要的collection:

复制代码代码示例:
A:
$mo=newMongo();
$coll=$mo->dbname->collname;//获得一个collection对象
B:
$db=$mo->selectDB(’dbname’);
$coll=$db->collname;
C:
$db=$mo->dbname;
$coll=$db->collname;
D:
$db=$mo->dbname;
$coll=$db->selectCollectoin(’collname’);//获得一个collection对象
插入数据(MongoCollection对象):
http://us.php.net/manual/en/mongocollection.insert.php
MongoCollection::insert(array$a,array$options)
array$a要插入的数组
array$options选项
safe是否返回操作结果信息
fsync是否直接插入到物理硬盘
例子:

复制代码代码示例:
$coll=$mo->db->foo;
$a=array(’a’=>’b’);
$options=array(’safe’=>true);
$rs=$coll->insert($a,$options);

$rs为一个array型的数组,包含操作信息
删除数据库中的记录(MongoCollection对象):
http://us.php.net/manual/en/mongocollection.remove.php
MongoCollection::remove(array$criteria,array$options)
array$criteria条件
array$options选项
safe是否返回操作结果
fsync是否是直接影响到物理硬盘
justOne是否只影响一条记录
例子:

复制代码代码示例:
$coll=$mo->db->coll;
$c=array(’a’=>1,’s’=>array(’$lt’=>100));
$options=array(’safe’=>true);
$rs=$coll->remove($c,$options);

$rs为一个array型的数组,包含操作信息
更新数据库中的记录(MongoCollection对象):
http://us.php.net/manual/en/mongocollection.update.php
MongoCollection::update(array$criceria,array$newobj,array$options)
array$criteria条件
array$newobj要更新的内容
array$options选项
safe是否返回操作结果
fsync是否是直接影响到物理硬盘
upsert是否没有匹配数据就添加一条新的
multiple是否影响所有符合条件的记录,默认只影响一条
例子:

复制代码代码示例:
$coll=$mo->db->coll;
$c=array(’a’=>1,’s’=>array(’$lt’=>100));
$newobj=array(’e’=>’f’,’x’=>’y’);
$options=array(’safe’=>true,’multiple’=>true);
$rs=$coll->remove($c,$newobj,$options);

$rs为一个array型的数组,包含操作信息
查询collection获得单条记录(MongoCollection类):
http://us.php.net/manual/en/mongocollection.findone.php
arrayMongoCollection::findOne(array$query,array$fields)
array$query条件
array$fields要获得的字段
例子:

复制代码代码示例:
$coll=$mo->db->coll;
$query=array(’s’=>array(’$lt’=>100));
$fields=array(’a’=>true,’b’=>true);
$rs=$coll->findOne($query,$fields);

如果有结果就返回一个array,如果没有结果就返回NULL
查询collection获得多条记录(MongoCollection类):
http://us.php.net/manual/en/mongocollection.find.php
MongoCursorMongoCollection::find(array$query,array$fields)
array$query条件
array$fields要获得的字段
例子:

复制代码代码示例:
$coll=$mo->db->coll;
$query=array(’s’=>array(’$lt’=>100));
$fields=array(’a’=>true,’b’=>true);
$cursor=$coll->find($query,$fields);
//排序
$cursor->sort(array(‘字段’=>-1));(-1倒序,1正序)
//跳过部分记录
$cursor->skip(100);跳过100行
//只显示部分记录
$cursor->limit(100);只显示100行
返回一个游标记录对象MongoCursor。
针对游标对象MongoCursor的操作(MongoCursor类):
http://us.php.net/manual/en/class.mongocursor.php
循环或结果记录:

复制代码代码示例:
$cursor=$coll->find($query,$fields);
while($cursor->hasNext()){
$r=$cursor->getNext();
var_mp($r);
}
或者
$cursor=$coll->find($query,$fields);
foreache($cursoras$k=>$v){
var_mp($v);
}
或者
$cursor=$coll->find($query,$fields);
$array=iterator_to_array($cursor);

㈦ MongoDB在ThinkPHP里面怎么进行数据库操作

连接数据库
$conn=new Mongo(“mongodb://sa:123@localhost”); #带用户名密码
选择数据库和集合
$db=$conn->selectDB(“mydb”);
$collection = $db->selectCollection(‘column’);
增删改查
1.插入
$array=array(‘column_name’=>’col’.rand(100,999),’column_exp’=>’xiaocai’);

$result=$collection->insert($array); #简单插入
2. 修改更新
$where=array(‘column_name’=>’col123′);
$newdata=array(‘column_exp’=>’GGGGGGG’,'column_fid’=>444);
$result=$collection->update($where,array(‘$set’=>$newdata));
3.删除
$where=array(‘column_name’=>’col685′);
$result=$collection->update($where,array(‘$unset’=>’column_exp’));
4.查询

$result = $collection->find();

㈧ 如何用php对mongodb进行模糊查询

$mongo_db->like('name','维达');
你试试看还不行的话楼主可以自己去后盾人看看,还送后盾会员卡哦

㈨ mongodb 乐观锁怎么使用php

sql中并发控制采用的乐观锁就是在记录中增加版本号或timestamp,那么MongoDB中如何实现呢?
Mongodb不善于处理事务,但提供了findAndModify命令。该命令允许对文档进行原子性更新,并在同一次调用中返回:
代码如如:
db.collection_yown.findAndModify(
{
query:{"name":"yown"},update:{"version":2},new:true or false
}
)
默认情况下,findAndModify命令会返回更新前的文档,要是返回修改后的文档,就把new设置为false.
Mongodb同时也提供update命令,这两者的区别如下:
update和findAndModify都可以用做更新操作;
区别
findAndModify是有返回值的,输出中的value字段即返回修改之前的文档,使用 new:true选项返回修改后的文档。 update是更新操作,是没有返回值的。
findAndModify 强调操作的原子性(atomically),比如用来实现自增1的操作或者操作队列。属于 get-and-set 式的操作,一般来讲,findAndModify 比update操作稍慢,因为需要等待数据库的响应。
另外findAndModify ,其中modify可以是update,还可以是remove
{
findAndModify: <string>,
query: <document>,
sort: <document>,
remove: <boolean>,
update: <document>,
new: <boolean>,
fields: <document>,
upsert: <boolean>
}

㈩ php7 mongodb 扩展 真的很差吗

MongoDB\Driver\Manager::executeBulkWrite
这玩意还配置了一个巨大的类库来配合调用:就是这个:https://github.com/mongodb/mongo-php-library ,纯粹是脱裤子放P,多此一举,本来原生扩展就已经巨长、巨难用,还配一个根本没有简化任何代码的库有什么意义?甚至于调用这个类库比原生的名字更长、更啰嗦,而且多了一层封装就多一次bug机会。
这个库文件总共63个,看看,如果你随便写个脚本访问一下mongodb,还得包含63个文件,我TM整个项目都没有63个文件好不好?这些个写惯了java的没事就老老实实写java,都跑来写php,php是要解析执行的,又不像jvm那么编译优化执行,搞那么多文件,不影响执行速度吗?真是狗屎,所以完全不推荐用这个狗屎库。
但是这个扩展最奇怪的就是文档超级简陋,根本不能获得任何有价值的信息,所以只能靠摸索来了。
下面是我用到的由MongoClient迁移到MongoDB\Driver的差异点。
MongoClient插入或更新是同样的代码:
(new MongoClient())->{$db}->{$collection}->save($arr);
// 这个$arr数组可以直接含有 "_id" 索引来指定 mongodb文档的_id值,就这么简单粗暴,这才是php啊!
MongoDB\Driver,插入和更新需要区分:
$mongo = new MongoDB\Driver\Manager();
$bulk = new MongoDB\Driver\BulkWrite(['ordered' => true]);
$data = $mongo->executeQuery('db.collection', new MongoDB\Driver\Query([]), new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY_PREFERRED))->toArray();
if (empty($data[0])) { // 确定不存在,插入
$bulk->insert($arr);
} else { // 否者更新
$bulk->update([], array('$set' => $arr)); // $arr同样是刚才的数组
}
// 还没完,还要执行下一步:db.collection要替换成实际的数据库、集合名
$result = $mongo->executeBulkWrite('db.collection', $bulk, new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000));
// 返回插入或更新是否成功:
$ok = $result->getInsertedCount() || $result->getModifiedCount() ? 1 : 0;
// 真是够了!
查询一条记录:
MongoClient:
(new MongoClient())->{$db}->{$collection}->findOne(['_id' => $id]);
MongoDB\Driver:
$mongo = new MongoDB\Driver\Manager();
$result = $mongo->executeQuery('db.collection', new MongoDB\Driver\Query(['_id'=>$id], []), new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY_PREFERRED));
// 返回的$result是一个对象,需要手动转换成数组。
查询数量时候,需要注意:
$mongo = new MongoDB\Driver\Manager();
$cursor = $mongo-executeCommand($db, new MongoDB\Driver\Command($arr), new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY_PREFERRED));
// 这里$cursor是一个游标。需要注意$arr里的字段:
$arr = ['count'=>$collection, 'query'=>$query]; // 这里count必须排在前面,位置反了直接报异常。
查询结果集:
$mongo = new MongoDB\Driver\Manager();
$cursor = $mongo->executeQuery('db.collection', new MongoDB\Driver\Query($arr, $opts), new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY_PREFERRED));
//注意,这里的 $arr和 $opts;
$arr = ['_id'=> ['$in'=> $ids] ]; // 根据id数组获取集合
$opts = ['limit'=> $limit, 'skip'=> $skip ]; // 不推荐
// 这里在传递$limit和$skip的时候,最好先转成整数,不然不生效:
$opts = ['limit'=> (int) $limit, 'skip'=> (int) $skip ]; // 推荐写法。
// 写到这里,让人怀疑是不是在用php了,怎么还需要这样的类型转换。字符串整数都不行!
基本就这样,推荐自己封装一个简单的MongoDB\Driver,而不是使用那个巨大无比的库、也不推荐直接用原生

阅读全文

与phpmongodb手册相关的资料

热点内容
android伸缩控件 浏览:851
androidm3u8缓存 浏览:234
imphp开源知乎 浏览:706
清除网络通配符dos命令 浏览:837
鸿蒙系统怎么快速换回安卓 浏览:712
pdf绿色虚拟打印机 浏览:213
androidtab框架 浏览:147
java转php的时间戳 浏览:639
编译libstdc依赖 浏览:659
清算法人与原法人的区别 浏览:410
家庭装修下载什么app软件 浏览:576
美食博主用什么app拍视频 浏览:817
ipone手机如何加密微信 浏览:358
自来水加密阀阀帽 浏览:438
华为交换机dhcp配置命令 浏览:319
androidbitmap缩小 浏览:275
单片机串口控制灯 浏览:88
大讯云服务器安装视频 浏览:788
华为算法领先世界 浏览:658
linux路由重启 浏览:570