好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

mongodb事务PHP mongodb事务中不允许执行哪个操作

很多站长朋友们都不太清楚mongodb事务PHP,今天小编就来给大家整理mongodb事务PHP,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 mongodb 乐观锁怎么使用php 2、 mongodb 3.2怎么在php中连接 3、 MongoDB在ThinkPHP里面怎么进行数据库操作 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>

}

mongodb 3.2怎么在php中连接

表标PHP已经自带了mongo功能,你就可以操作下面的代码(但是你必须有安装mongodb服务器)

一、连接数据库

使用下面的代码创建一个数据库链接

复制代码 代码如下:

<?php

$connection = new Mongo(mongodb://192.168.1.5:27017); //链接到 192.168.1.5:27017//27017端口是默认的。

$connection = new Mongo( "example测试数据" ); //链接到远程主机(默认端口)

$connection = new Mongo( "example测试数据:65432" ); //链接到远程主机的自定义的端口

print_r($connection->listDBs());//能打印出数据库数组,看看有几个数据库。

?>

如图:

上图说有一个数据库名字叫local,总大小1个字节,他是空的。看见ok表示运行成功。

现在你可以使用$connection链接来操作数据库了

选择数据库

使用下面的代码来选择一个数据库

复制代码 代码如下:

<?php

$db = $connection->dbname;

?>

这里的数据库并不一定是一个已经存在的数据库,如果所选择的数据库不存在,则会新建一个数据库,所以在选择数据库的时候,注意一定要填上正确的数据库名

如果拼写错误的话,很有可能会新建一个数据库

复制代码 代码如下:

<?php

$db = $connection->mybiglongdbname;

//做一些事情

$db = $connection->mybiglongdbnme;

//现在会连上一个新的数据库

?>

获取一个集合

获取一个集合跟选择数据库拥有相同的语法格式

复制代码 代码如下:

<?php

$db = $connection->baz;//选择数据库

$collection = $db->foobar;//选择foobar集合

//或者使用更简洁的方式

$collection = $connection->baz->foobar;

?>

插入一个文档

多维数组是可以被储存到数据库中的基本单元

一个随机的文档可能是这样

复制代码 代码如下:

<?php

$doc = array(

”name” => “MongoDB”,

“type” => “database”,

“count” => 1,

“info” => (object)array( “x” => 203,

“y” => 102),

“versions” => array(“0.9.7″, “0.9.8″, “0.9.9″)

);

?>

注意:你可以嵌套数组与对象,对象与文档在mongodb中几乎是一样的,你可以使用$doc调用一个文档或对象,但是info字段总是一个对象而不是一个文档,

本约束适用于所有文档

使用MongoCollection::insert()插入一个文档

复制代码 代码如下:

<?php

$m = new Mongo();

$collection = $m->foo->bar;

$collection->insert($doc);

?>

mongodb 的 insert()、save() ,区别主要是:若存在主键,insert() 不做操作,而save() 则更改原来的内容为新内容。

存在数据: { _id : 1, " name " : " n1 " }

insert({ _id : 1, " name " : " n2 " }) 会提示错误

save({ _id : 1, " name " : " n2 " }) 会把 n1 改为 n2 。

使用MongoCollection::findOne()查询文档

为了证明上面那段代码的数据已经插入到数据库里了,我们进行简单的 findOne()操作以得到集合中的第一个文档数据,这种方法只返回一个文档数据,

这种方法适用于在你的查询语句的时候只匹配一个文档或者你只关心第一条数据

复制代码 代码如下:

<?php

$obj = $collection->findOne();

var_dump( $obj );

?>

你会看到下列结果

复制代码 代码如下:

array(5) {

["_id"]=>

object(MongoId)#6 (0) {

}

["name"]

string(7) “MongoDB”

["type"]=>

string(8) “database”

["count"]=>

int(1)

["info"]=>

array (2) {

["x"]=>

int(203)

["y"]=>

int(102)

}

["versions"]

array(3) {

[0]=>

string(5) “0.9.7″

[1]=>

string(5) “0.9.8″

[2]=>

string(5) “0.9.9″

}

}

注意_id字段自动加载了文档上,MongoDB储存元素中以_以及$开头的都是供内部使用的

添加更多文档

为了做一些更有趣的事情,我们添加更多简单的文档到集合中,这些文档如下

复制代码 代码如下:

<?php

array( “i” => value );

?>

我们可以使用循环相当有效的插入数据

复制代码 代码如下:

<?php

for($i=0; $i<100; $i++) {

$collection->insert( array( “i” => $i ) );

}

?>

注意:我们可以插入不同的字段在同一字符集中,在这方面意味着MongoDB拥有非常自由的储存模式

在一个集合中计算文档的数量

现在我们插入了101个文档(我们用循环插入了100个,之前还插入了一个),我们可以使用count()来看看我们的数据是不是都被插入进去了

复制代码 代码如下:

<?php

echo $collection->count();

?>

这段代码将打印出101

MongoCollection::count() 也可以查询字段数据

使用游标得到集合中的所有文档

为了得到集合中的所有文档,我们可以使用 MongoCollection::find()方法,find()方法返回一个 MongoCursor对象,可以让我们重复得到查询所匹配的的文档

复制代码 代码如下:

<?php

$cursor = $collection->find();

foreach ($cursor as $id => $value) {

echo “$id: “;

var_dump( $value );

}

?>

这样我们会打印出集合中的这101个文档,$id就是文档中的_id字段,$value 就是文档本身

为查询规定一个标准

我们可以通过find()方法得到集合中的文档子集,例如,我们要查询出集合中i字段为71的文档,我们可以使用下列方法

复制代码 代码如下:

<?php

$query = array( “i” => 71 );

$cursor = $collection->find( $query );

while( $cursor->hasNext() ) {

var_dump( $cursor->getNext() );

}

?>

我们将打印如下数据

复制代码 代码如下:

array(2) {

["_id"]=>

object(MongoId)#6 (0) {

}

["i"]=>

int(71)

["_ns"]=>

“testCollection”

}

为查询设定一个范围

我们可以通过find()创建一个查询语句以得集合中的一个子集,例如如果我们得到所有”i”>50的文档,我们可以使用如下代码

复制代码 代码如下:

<?php

$query = array( “i” => array(‘$gt' =>50)); //注意'$gt'两边的单引号

$cursor = $coll->find( $query );

while( $cursor->hasNext() ) {

var_dump( $cursor->getNext() );

}

?>

我们同样可以得到20 < i <= 30之间的数据

复制代码 代码如下:

<?php

$query = array( “i” => array( “\$gt” => 20, “\$lte” => 30 ) );

$cursor = $coll->find( $query );

while( $cursor->hasNext() ) {

var_dump( $cursor->getNext() );

}

?>

我们非常容易漏掉$美元符号,你也可以选择你自定义的符号来代替美元符号,选择一个不会在你的建里面出现的符号例如”:”,在php.ini中加上这么一句话

复制代码 代码如下:

mongo.cmd = “:”

那么上面的代码就可以替换成

复制代码 代码如下:

<?php

$query = array( “i” => array( “:gt” => 20, “:lte” => 30 ) );

?>

当然你也可以使用ini_set(“mongo.cmd”, “:”)的方法来改变

创建一个索引

MongoDB支持索引,并且可以很容易的加到一个集合中,你只要指定某个字段为索引就行了,并且还可以指定 正序索引(1)与 倒序索引(-1)

下面的代码为I创建了索引

复制代码 代码如下:

<?php

$coll->ensureIndex( array( “i” => 1 ) ); //在”i”上创建了一个索引

$coll->ensureIndex( array( “i” => -1, “j” => 1 ) );//在”i”上创建了倒序索引 在”j”上创建了正序索引

?>

一个完整的简单例子

这个例子展示了如何链接mongodb数据库,如何选择数据库,如何插入数据,如何查询数据,以及关闭数据库链接

复制代码 代码如下:

<?php

//链接

$m = new Mongo();

// 选择一个数据库

$db = $m->comedy;

$collection = $db->cartoons;

//添加一个元素

$obj = array( "title" => "Calvin and Hobbes", "author" => "Bill Watterson" );

$collection->insert($obj);

//修改

$newdata = array('$set' => array("title" => "Calvin and Hobbes"));

$collection->update(array("author" => "caleng"), $newdata);

//删除

$collection->remove(array('author'=>'caleng'), array("justOne" => true));

//添加另一个元素,使用不同的格式

$obj = array( "title" => "XKCD", "online" => true );

$collection->insert($obj);

//查询所有的集合

$cursor = $collection->find();

//重复显示结果

foreach ($cursor as $obj) {

echo $obj["title"] . "\n";

}

// 关闭链接

$m->close();

?>

输出结果为

复制代码 代码如下:

Calvin and Hobbes

XKCD

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();

关于mongodb事务PHP的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于mongodb事务PHP mongodb事务中不允许执行哪个操作的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did196041
更新时间:2023-04-26   阅读:17次

上一篇: phpajax怎么用 php $a

下一篇:Php7降到php5 php7升级到php8

最新资料更新

  • 1.php类属性分类 php数据类型
  • 2.php数组冒泡排序 php冒泡排序面试题
  • 3.php受不受欢迎 php无法接收post
  • 4.php数据库对象 php针对数据库的查询函数是
  • 5.php生成静态代码 php如何实现静态化
  • 6.php的token请求 php简单的token验证
  • 7.php登录保护机制 php保持登录状态
  • 8.php好的入门书籍 php好的入门书籍在哪里
  • 9.php图片打不开 php打不开文件
  • 10.php7性能tu Php性能
  • 11.php登录网站 php网页登录
  • 12.PHP中嵌入script php嵌入html有哪几种方法
  • 13.jq调用php数据 php100 jquery教程
  • 14.php加密数据用js解密 php加密 js解密
  • 15.php交叉报表 ureport 交叉报表
  • 16.php框架开发教程 php系统开发框架
  • 17.php5.2.8安装 php安装教程
  • 18.php代理访问源码 php 代理
  • 19.phpwebim开发 php web开发实用教程
  • 20.php可以回收吗 php还有人用吗

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://www.haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]