MongoDB与PHP的添加、修改、查询、删除
使用下面的代码创建一个数据库链接
$connection = new Mongo(); //链接到 localhost:27017
$connection = new Mongo( "example.com" ); //链接到远程主机(默认端口)
$connection = new Mongo( "example.com:65432" ); //链接到远程主机的自定义的端口
?>
使用下面的代码来选择一个数据库
$db = $connection->dbname;
?>
如果拼写错误的话,很有可能会新建一个数据库
$db = $connection->mybiglongdbname;
//做一些事情
$db = $connection->mybiglongdbnme;
//现在会连上一个新的数据库
?>
获取一个集合跟选择数据库拥有相同的语法格式
$db = $connection->baz;//选择数据库
$collection = $db->foobar;//选择foobar集合
//或者使用更简洁的方式
$collection = $connection->baz->foobar;
?>
多维数组是可以被储存到数据库中的基本单元
一个随机的文档可能是这样
<?php
”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字段总是一个对象而不是一个文档,
本约束适用于所有文档
<?php
$m = new Mongo();
$collection = $m->foo->bar;
$collection->insert($doc);
?>
为了证明上面那段代码的数据已经插入到数据库里了,我们进行简单的 findOne()操作以得到集合中的第一个文档数据,这种方法只返回一个文档数据,
这种方法适用于在你的查询语句的时候只匹配一个文档或者你只关心第一条数据
$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″
}
}
为了做一些更有趣的事情,我们添加更多简单的文档到集合中,这些文档如下
<?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
$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 );
var_dump( $cursor->getNext() );
}
?>
我们同样可以得到20 < i <= 30之间的数据
<?php
$query = array( “i” => array( “\$gt” => 20, “\$lte” => 30 ) );
$cursor = $coll->find( $query );
var_dump( $cursor->getNext() );
}
?>
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数据库,如何选择数据库,如何插入数据,如何查询数据,以及关闭数据库链接
//链接
$m = new Mongo();
// 选择一个数据库
$db = $m->comedy;
$collection = $db->cartoons;
//添加一个元素
$obj = array( "title" => "Calvin and Hobbes", "author" => "Bill Watterson" );
$collection->insert($obj);
//添加另一个元素,使用不同的格式
$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与PHP的添加、修改、查询、删除的更多相关文章
- DNS添加/修改/查询/删除A记录
#查询DNS可用类 Get-WmiObject -Namespace root\MicrosoftDNS -List #查询所有资源记录 $mydns = [WMIClass]"ROOT\M ...
- Entity Framework Code First添加修改及删除单独实体
对于一个单独实体的通常操作有3种:添加新的实体.修改实体以及删除实体. 1.添加新的实体 Entity Framework Code First添加新的实体通过调用DbSet.Add()方法来实现. ...
- Entity Framework Code First添加修改及删除外键关联实体
1.添加外键关联实体 1>.添加新的Province及City实体 using (var ctx = new PortalContext()) { var city1 = new City { ...
- 9.java 操作mongodb插入、读取、修改以及删除基础
1 package mongodb; import java.net.UnknownHostException; import java.util.ArrayList; import java.uti ...
- python 链接mysql 修改查询删除语句
import mysql.connector.pooling config = { "host": "localhost", "port": ...
- WebFlux系列(十二)MongoDB应用,新增、修改、查询、删除
#Java#Spring#SpringBoot#Mongo#reactor#webflux#数据库#新增#修改#查询#删除# Spring Boot WebFlux Mongo数据库新增.删除.查询. ...
- Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
http://www.jb51.net/article/42016.htm 初识Jquery EasyUI看了一些博主用其开发出来的项目,页面很炫,感觉功能挺强大,效果也挺不错,最近一直想系统学习一套 ...
- 打通前后端全栈开发node+vue进阶【课程学习系统项目实战详细讲解】(3):用户添加/修改/删除 vue表格组件 vue分页组件
第三章 建议学习时间8小时 总项目预计10章 学习方式:详细阅读,并手动实现相关代码(如果没有node和vue基础,请学习前面的vue和node基础博客[共10章] 演示地址:后台:demo ...
- MVC5 网站开发之八 栏目功能 添加、修改和删除
本次实现栏目的浏览.添加.修改和删除. 栏目一共有三种类型. 常规栏目-可以添加子栏目,也可以添加内容模型.当不选择内容模型时,不能添加内容. 单页栏目-栏目只有一个页面,可以设置视图. 链接栏目-栏 ...
- JavaWeb_day03_员工信息添加修改删除
day03员工的添加,修改,删除 修改功能 思路 : 点击修改员工数据之后,跳转到单行文本,查询要修改的员工id的全部信息,主键id设置为readonly,其余的都可以修改, 修改之后,提交按钮,提交 ...
随机推荐
- fedora20 播放aiv视频
环境:fedora20 64位 下载个教程是avi的格式,用FEDORA自带的视频播放提示少插件,搜索又没有. 到网上搜索后,参考下面的方式添加软件仓库后,再打开视频播放顺利装好插件.但视频画件一闪 ...
- Codeforces 301_div.2_Ice Cave(BFS走冰块)
Ice Cave Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Descripti ...
- Java获取ip地址的几种方法
以下内容介绍下java获取ip地址的几种思路. 1.直接利用java.net.InetAddress类获取,不过这种方法只在windows环境下有效,在linux环境下只能获取localhost地址( ...
- Currency Exchange
主要找正环: #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm& ...
- (转载)php之call_user_func_array的简易用法
(转载)http://www.cnitblog.com/neatstudio/archive/2006/07/21/13990.html php之call_user_func_array的简易用法 今 ...
- 《Ruby语言入门教程v1.0》学习笔记-02
9.18 第四章 一切都是对象 这个章节的例子都举得很浅显易懂,而且作者的语言= =噗,委实生动有趣啊是~~ 4.1 两种思维方式 初期的编程思想是:以“如何做”为指导来编写代码.这时期的编程语言叫 ...
- LeetCode——Pascal's Triangle
Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5,Retur ...
- Nodejs in Visual Studio Code 01.简单介绍Nodejs
1.开始 作者自己:开发人员,Asp.Net , html / js , restful , memcached , oracle ,windows , iis 目标读者:供自己以后回顾 2.我看No ...
- 怎么都没人提 google 加密搜索呢? google如何稳定打开
1. 使用smarthosts提供的hosts文件 https://smarthosts.googlecode.com/svn/trunk/hosts2. 修改浏览器默认搜索引擎为 https://e ...
- js到记时代码
原文地址:http://www.w3school.com.cn/tiy/t.asp?f=hdom_timing_infinite html><head><script type ...