- 浏览: 7935651 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (2425)
- 软件工程 (75)
- JAVA相关 (662)
- ajax/web相关 (351)
- 数据库相关/oracle (218)
- PHP (147)
- UNIX/LINUX/FREEBSD/solaris (118)
- 音乐探讨 (1)
- 闲话 (11)
- 网络安全等 (21)
- .NET (153)
- ROR和GOG (10)
- [网站分类]4.其他技术区 (181)
- 算法等 (7)
- [随笔分类]SOA (8)
- 收藏区 (71)
- 金融证券 (4)
- [网站分类]5.企业信息化 (3)
- c&c++学习 (1)
- 读书区 (11)
- 其它 (10)
- 收藏夹 (1)
- 设计模式 (1)
- FLEX (14)
- Android (98)
- 软件工程心理学系列 (4)
- HTML5 (6)
- C/C++ (0)
- 数据结构 (0)
- 书评 (3)
- python (17)
- NOSQL (10)
- MYSQL (85)
- java之各类测试 (18)
- nodejs (1)
- JAVA (1)
- neo4j (3)
- VUE (4)
- docker相关 (1)
最新评论
-
xiaobadi:
jacky~~~~~~~~~
推荐两个不错的mybatis GUI生成工具 -
masuweng:
(转)JAVA获得机器码的实现 -
albert0707:
有些扩展名为null
java 7中可以判断文件的contenttype了 -
albert0707:
非常感谢!!!!!!!!!
java 7中可以判断文件的contenttype了 -
zhangle:
https://zhuban.me竹板共享 - 高效便捷的文档 ...
一个不错的网络白板工具
1 mongodb启动时,设置启动项
C:\>mongodb\bin\mongod --config C:\mongodb.conf
其中mongodb.conf为:
dbpath = D:\mongodb_data
logpath = D:\mongodb.log
logappend = true
如果是linux的话,则mongod --config /etc/mongodb.conf
2 停止server
db.shutdownServer()
3 常用操作:
use myfirstdb
插入db
db.movies.insert({name:"Source Code", genre:"sci-fi", year:2011})
查找所有记录
db.movies.find()
4 php 5.2 mongo driver下载:
http://downloads.mongodb.org/mongo-latestphp5.2vc6ts.
zip
5.3 mongo driver下载:
http://downloads.mongodb.org/mongo-latest-php5.3vc6ts.zip
把DLL复制到extension目录,然后
extension=php_mongo.dll即可
5 列出当前数据库的php mongodb程序
<?php
try{
$mongo = new Mongo(); //create a connection to MongoDB
$databases = $mongo->listDBs(); //List all databases
echo '<pre>';
print_r($databases);
$mongo->close();
} catch(MongoConnectionException $e) {
//handle connection error
die($e->getMessage());
}
?>
如果是连接时用不同的端口,构造函数中用:
$mongo = new Mongo($server="mongodb://localhost:8888");
也可以指定timeout的策略;
try {
$mongo = new Mongo($options=array('timeout'=> 100))
} catch(MongoConnectionException $e) {
die("Failed to connect to database ".$e->getMessage());
}
6 通过PHP保存对象到mongo db中
$connection = new Mongo();
$database = $connection->selectDB('myblogsite');
$collection = $database->selectCollection('articles');
$article = array();
$article['title'] = $_POST['title'];
$article['content'] = $_POST['content'];
$article['saved_at'] = new MongoDate();
$collection->insert($article);
注意的是,默认不用显式create database即可,如果不存在则会自动
新建立database,也可以:
$connection = new Mongo();
$collection = $connection->myblogsite->articles;
mongodb的插入是异步的,如果不想异步,可以这样;
try {
$status = $connection->insert(array('title' => 'Blog Title',
'content' => 'Blog Content'),
array('safe' => True));
echo "Insert operation complete";
} catch (MongoCursorException $e) {
die("Insert failed ".$e->getMessage());
}
则必须等插入完成后才返回给用户,继续执行下一条语句
也可以指定timeout的策略:
$collection->insert($document, array('safe' => True,
'timeout' => True));
7 设置自己的自增id
$document = array('_id' => hash('sha1', $username.time()),
将设置id为username后加上当前时间再hash.
8 日期设置
$article['saved_at'] = new MongoDate();
$timestamp = new MongoDate(strtotime('2011-05-21 12:00:00'));
print date('g:i a, F j', $timestamp->sec); //prints 12 pm, May 21
$lastweek = new MongoDate(strtotime('-1 week')); //找出一个星期以来的记录
$cursor = $articleCollection->find(array('saved_at' =>
array('$gt' => $lastweek)));
指定一定范围内的记录:
$start = new MongoDate(strtotime('2011-05-01 00:00:00'));
$end = new MongoDate(strtotime('2011-05-31 23:59:59'));
$articleCollection->find(array('saved_at'=>
array('$gte' => $start,
'$lte' => $end)));
9 列出某个表的所有记录
$cursor = $collection->find();
<?php while ($cursor->hasNext()):
$article = $cursor->getNext(); ?>
<h2><?php echo $article['title']; ?></h2>
............
找某条记录:$article = $collection->findOne(array('_id'=>
new MongoId($id)));
查找时也可以传入多个参数:
$moviesCollection->find(array('genre' => 'comedy', 'year' => 2011));
if ($cursor->count() === 0) //如果找不到
如果查询多个条件:
$collection->find(array('x' => array('$gt' => 100)));
//$ is escaped within double quotes (")
$collection->find(array('x' => array("\$gt" => 100)));
注意要用单引号,如果要用双引号,则要加上转义符。
10 排序:
$cursor->sort(array('saved_at' => -1)) //按save_at字段降序排列,1为升序
11 skip和limit:
$cursor = $articleCollection->find();
//skip the first five articles in the cursor
$cursor->skip(5);
$cursor->limit(10);//结果集只取10条
12 更新数据库
$articleCollection->update(array('_id' => new MongoId($id)),
$article);
第一个参数为指定的条件(更新条件),第二个参数为要更新的对象
还有可选参数如下;
$collection->update($criteria, $newobj, array('safe' => True));
safe=true时,等到UPDATE结束才返回结果
mongodb还支持upsert的操作:如果存在则更新,如果不存在则插入
$users->update(array('email' => 'alice@wonderland.com'),
array('firstname' => 'Alice', 'lastname'=> 'Liddell'),
array('upsert' => True));
这里对email为alice@wonderland.com的记录进行更新其firstname,lastname字段的内容
13 修饰符
比如set,只修改记录的某个部分,可以这样:
$articles->update(array('_id' => MongoId('4dcd2abe5981')),
array('$set' => array('title' => 'New
Title')));
使用inc:
$articles->update(array('_id' => MongoId('4dcd2abe5981')),
array('$set' => array('content' => 'New Content'),
'$inc' => array('update_count' => 1)));
将update_count+1
unset:
$articles->update(array('_id' => MongoId('4dcd2abe5981')),
array('$unset' => array('title' => True)));
将title field从这个document中移除
更名rename:
$articles->update(array(),
array('$rename' => array('saved_at' =>
'created_at')),
array('multiple' => True));
将save_at更名为create_at
14 删除记录
$articleCollection->remove(array('_id' => new MongoId($id)));
$movies->remove(array('genre' =>'drama'),
array('justOne' => True));
如果加了justOne的参数,则只删除符合条件的一条记录而已,其他不删除
15 document的关系
1)嵌套
{
"_id" : ObjectId("4dd491695072aefc456c9aca"),
"username" : "alphareplicant",
"email" : "roybatty@androids.org",
"fullname" : "Roy Batty",
"joined_at" : ISODate("2011-05-19T03:41:29.703Z"),
"address" : {
"street" : "13 Tannhauser Gate",
"city" : "Caprica",
"state" : "CC",
"zipcode" : 512
},
}
2)引用
{
_id : ObjectId("4dcd2abe5981aec801010000"),
title : "The only perfect site is hind-site",
content : "Loren ipsum dolor sit amet…",
saved_at : ISODate('2011-05-16T18:42:57.949Z'),
author_id : ObjectId("4dd491695072aefc456c9aca")
}
3)比如一个一对多的关系:
比如一个文章下的评论:
$comment = array(
'name' => $_POST['commenter_name'],
'email' => $_POST['commenter_email'],
'comment' => $_POST['comment'],
'posted_at' => new MongoDate()
);
$collection->update(array('_id' => new MongoId($id)),
array('$push' => array('comments' =>
$comments)));
使用的是$push的修饰符,一般来说,用内嵌的document效率比较高
或者:
$article = $articleCollection->findOne(array('_id' => new MongoId($id)));
$comments = (isset($article['comments'])) ? $article['comments'] : array();
$comment = array(
'name' => $_POST['commenter_name'],
'email' => $_POST['commenter_email'],
'comment' => $_POST['comment'],
'posted_at' => new MongoDate()
);
array_push($comments, $comment);
$articleCollection->update(array('_id' => new MongoId($id)), array('$set' => array('comments' =>
$comments)));
使用.号来查询子嵌套文档
{
name : "Gordon Freeman",
address : {
city : "Springfield",
state : "Florida"
}
}
{
name : "Lara Croft",
address : {
city : "Miami",
state: "Florida"
}
}
则查询address中state为florida的document:
$users->find(array('address.city' => 'Springfield',
'address.state' => 'Florida'));
C:\>mongodb\bin\mongod --config C:\mongodb.conf
其中mongodb.conf为:
dbpath = D:\mongodb_data
logpath = D:\mongodb.log
logappend = true
如果是linux的话,则mongod --config /etc/mongodb.conf
2 停止server
db.shutdownServer()
3 常用操作:
use myfirstdb
插入db
db.movies.insert({name:"Source Code", genre:"sci-fi", year:2011})
查找所有记录
db.movies.find()
4 php 5.2 mongo driver下载:
http://downloads.mongodb.org/mongo-latestphp5.2vc6ts.
zip
5.3 mongo driver下载:
http://downloads.mongodb.org/mongo-latest-php5.3vc6ts.zip
把DLL复制到extension目录,然后
extension=php_mongo.dll即可
5 列出当前数据库的php mongodb程序
<?php
try{
$mongo = new Mongo(); //create a connection to MongoDB
$databases = $mongo->listDBs(); //List all databases
echo '<pre>';
print_r($databases);
$mongo->close();
} catch(MongoConnectionException $e) {
//handle connection error
die($e->getMessage());
}
?>
如果是连接时用不同的端口,构造函数中用:
$mongo = new Mongo($server="mongodb://localhost:8888");
也可以指定timeout的策略;
try {
$mongo = new Mongo($options=array('timeout'=> 100))
} catch(MongoConnectionException $e) {
die("Failed to connect to database ".$e->getMessage());
}
6 通过PHP保存对象到mongo db中
$connection = new Mongo();
$database = $connection->selectDB('myblogsite');
$collection = $database->selectCollection('articles');
$article = array();
$article['title'] = $_POST['title'];
$article['content'] = $_POST['content'];
$article['saved_at'] = new MongoDate();
$collection->insert($article);
注意的是,默认不用显式create database即可,如果不存在则会自动
新建立database,也可以:
$connection = new Mongo();
$collection = $connection->myblogsite->articles;
mongodb的插入是异步的,如果不想异步,可以这样;
try {
$status = $connection->insert(array('title' => 'Blog Title',
'content' => 'Blog Content'),
array('safe' => True));
echo "Insert operation complete";
} catch (MongoCursorException $e) {
die("Insert failed ".$e->getMessage());
}
则必须等插入完成后才返回给用户,继续执行下一条语句
也可以指定timeout的策略:
$collection->insert($document, array('safe' => True,
'timeout' => True));
7 设置自己的自增id
$document = array('_id' => hash('sha1', $username.time()),
将设置id为username后加上当前时间再hash.
8 日期设置
$article['saved_at'] = new MongoDate();
$timestamp = new MongoDate(strtotime('2011-05-21 12:00:00'));
print date('g:i a, F j', $timestamp->sec); //prints 12 pm, May 21
$lastweek = new MongoDate(strtotime('-1 week')); //找出一个星期以来的记录
$cursor = $articleCollection->find(array('saved_at' =>
array('$gt' => $lastweek)));
指定一定范围内的记录:
$start = new MongoDate(strtotime('2011-05-01 00:00:00'));
$end = new MongoDate(strtotime('2011-05-31 23:59:59'));
$articleCollection->find(array('saved_at'=>
array('$gte' => $start,
'$lte' => $end)));
9 列出某个表的所有记录
$cursor = $collection->find();
<?php while ($cursor->hasNext()):
$article = $cursor->getNext(); ?>
<h2><?php echo $article['title']; ?></h2>
............
找某条记录:$article = $collection->findOne(array('_id'=>
new MongoId($id)));
查找时也可以传入多个参数:
$moviesCollection->find(array('genre' => 'comedy', 'year' => 2011));
if ($cursor->count() === 0) //如果找不到
如果查询多个条件:
$collection->find(array('x' => array('$gt' => 100)));
//$ is escaped within double quotes (")
$collection->find(array('x' => array("\$gt" => 100)));
注意要用单引号,如果要用双引号,则要加上转义符。
10 排序:
$cursor->sort(array('saved_at' => -1)) //按save_at字段降序排列,1为升序
11 skip和limit:
$cursor = $articleCollection->find();
//skip the first five articles in the cursor
$cursor->skip(5);
$cursor->limit(10);//结果集只取10条
12 更新数据库
$articleCollection->update(array('_id' => new MongoId($id)),
$article);
第一个参数为指定的条件(更新条件),第二个参数为要更新的对象
还有可选参数如下;
$collection->update($criteria, $newobj, array('safe' => True));
safe=true时,等到UPDATE结束才返回结果
mongodb还支持upsert的操作:如果存在则更新,如果不存在则插入
$users->update(array('email' => 'alice@wonderland.com'),
array('firstname' => 'Alice', 'lastname'=> 'Liddell'),
array('upsert' => True));
这里对email为alice@wonderland.com的记录进行更新其firstname,lastname字段的内容
13 修饰符
比如set,只修改记录的某个部分,可以这样:
$articles->update(array('_id' => MongoId('4dcd2abe5981')),
array('$set' => array('title' => 'New
Title')));
使用inc:
$articles->update(array('_id' => MongoId('4dcd2abe5981')),
array('$set' => array('content' => 'New Content'),
'$inc' => array('update_count' => 1)));
将update_count+1
unset:
$articles->update(array('_id' => MongoId('4dcd2abe5981')),
array('$unset' => array('title' => True)));
将title field从这个document中移除
更名rename:
$articles->update(array(),
array('$rename' => array('saved_at' =>
'created_at')),
array('multiple' => True));
将save_at更名为create_at
14 删除记录
$articleCollection->remove(array('_id' => new MongoId($id)));
$movies->remove(array('genre' =>'drama'),
array('justOne' => True));
如果加了justOne的参数,则只删除符合条件的一条记录而已,其他不删除
15 document的关系
1)嵌套
{
"_id" : ObjectId("4dd491695072aefc456c9aca"),
"username" : "alphareplicant",
"email" : "roybatty@androids.org",
"fullname" : "Roy Batty",
"joined_at" : ISODate("2011-05-19T03:41:29.703Z"),
"address" : {
"street" : "13 Tannhauser Gate",
"city" : "Caprica",
"state" : "CC",
"zipcode" : 512
},
}
2)引用
{
_id : ObjectId("4dcd2abe5981aec801010000"),
title : "The only perfect site is hind-site",
content : "Loren ipsum dolor sit amet…",
saved_at : ISODate('2011-05-16T18:42:57.949Z'),
author_id : ObjectId("4dd491695072aefc456c9aca")
}
3)比如一个一对多的关系:
比如一个文章下的评论:
$comment = array(
'name' => $_POST['commenter_name'],
'email' => $_POST['commenter_email'],
'comment' => $_POST['comment'],
'posted_at' => new MongoDate()
);
$collection->update(array('_id' => new MongoId($id)),
array('$push' => array('comments' =>
$comments)));
使用的是$push的修饰符,一般来说,用内嵌的document效率比较高
或者:
$article = $articleCollection->findOne(array('_id' => new MongoId($id)));
$comments = (isset($article['comments'])) ? $article['comments'] : array();
$comment = array(
'name' => $_POST['commenter_name'],
'email' => $_POST['commenter_email'],
'comment' => $_POST['comment'],
'posted_at' => new MongoDate()
);
array_push($comments, $comment);
$articleCollection->update(array('_id' => new MongoId($id)), array('$set' => array('comments' =>
$comments)));
使用.号来查询子嵌套文档
{
name : "Gordon Freeman",
address : {
city : "Springfield",
state : "Florida"
}
}
{
name : "Lara Croft",
address : {
city : "Miami",
state: "Florida"
}
}
则查询address中state为florida的document:
$users->find(array('address.city' => 'Springfield',
'address.state' => 'Florida'));
发表评论
-
11个php日常用的小tips 代码片段
2014-01-21 20:34 1930http://www.phpzag.com/11-useful ... -
php中的DirectoryIterator和RecursiveDirectoryIterator
2013-07-27 22:50 3512php中,可以用用DirectoryIterator获取指定目 ... -
uccenter中找回创始人密码
2013-03-11 19:12 1917偶然忘记了uccenter中的创始人密码,一查看,其实找回 ... -
php中通过register_shutdown_function记录fatal error
2013-02-09 23:56 2965今天发现php中,如果要记录fatal error的时候, ... -
php中检查是否ajax请求
2013-01-19 09:53 1468$ajax = false; if(!empty ... -
php中检查某个网页地址是否有效能被打开的最简单方法
2012-10-22 16:18 2090php中检查某个网页地址是否有效能被打开的最简单方法,其实可以 ... -
小结几个php操作office的类库
2012-07-20 19:16 19371 phpexcel 最强大完整的类库了,地址在: ht ... -
介绍几个PHP的开源不错的图片类库
2012-07-14 13:11 2880介绍几个PHP的开源不错的图片类库 1 pchart ... -
php中__sleep和__wakeup
2012-06-22 09:39 4520在php中,__sleep和___wakeup是两个分别自 ... -
PHP 5.4正式版重要新特性
2012-05-25 08:34 1673原文发表在:http://tech.it168.com/a20 ... -
用php实现备份数据库ZIP及导出
2012-04-17 08:59 1842经常在有的PHP开源系统中,看到有备份数据库并导出的方法 ... -
PHP Codeigniter 中的_remap方法简介
2012-04-05 21:06 4585在Codeigniter 中,其实有个容易忽略掉的不错的控 ... -
PHP 5.4中的traits初探
2012-04-01 19:57 5051PHP 5.4中的traits,是新引入的特性,中文还真不知道 ... -
php中的pdo和mysqli的对比选择
2012-03-10 22:25 7151在PHP中,如何选择PDO和mysqli呢?本文做个简单的 ... -
php 5.4中新增加对session状态判断的功能
2012-02-20 12:28 3967在以前的php 版本中,要判断session是否有效,只能 ... -
php curl的几段小应用
2012-02-07 10:10 1823php 的CURL是不错的功能,下面收藏几段不错的片段 1 ... -
php 5.3中的一个type hinting的用法
2012-01-20 11:50 2316今天偶然看php 5.3中的一个特性,叫type hintin ... -
cakephp的分页排序
2012-01-04 10:38 4228cakephp中的分页还是很简单的,下面例子复习下 1 数据 ... -
php中挺好用的strtotime方法
2011-12-20 11:32 1960在PHP中,经常要对日期进行计算,比如要计算一个月前的日期 ... -
php中使用curl发送JSON数据
2011-11-28 13:43 11782在PHP中,可以使用curl去发送JSON数据,例子如下: ...
相关推荐
通过本实战视频的学习,我们了解了如何利用Nginx + keepalived + MongoDB + haproxy + Sphinx这一组合来构建一套完整的分布式集群部署方案。该方案不仅能够有效应对高并发访问带来的挑战,还具备良好的扩展性和可...
MongoDB是一种分布式文档...通过学习和使用MongoDB的PHP扩展,开发者可以构建出高效、灵活的数据驱动的应用程序,满足现代Web服务的需求。然而,为了保持系统的安全性和性能,定期更新和升级软件组件是非常重要的。
包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】...
【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或...
包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】...
包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】...
包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】...
在本项目中,“php+mongodb小型留言板”是一个适合初学者的实践项目,旨在帮助学习者掌握MongoDB数据库的使用,并通过PHP进行数据交互。MongoDB是一种NoSQL文档型数据库,以其灵活性、高性能和高可扩展性著称。而PHP...
1. **分布式存储**:支持跨多个节点和磁盘的复制集,提供高可用性和数据冗余。 2. **水平扩展**:可以通过添加更多的服务器实现数据的分片,从而提高读写性能。 3. **灵活的数据模型**:支持嵌套数据结构,易于表示...
### MongoDB数据库学习精要与PHP操作指南 #### MongoDB基本概念概览 MongoDB是一种开源的文档型NoSQL数据库,以其高性能、高可用性和易用性而闻名,特别适合处理大量非结构化数据。其核心特性包括但不限于:面向...
1. 学习曲线陡峭: MongoDB 的学习曲线陡峭,需要一定的技术基础和数据库管理经验。 2. 资源消耗大: MongoDB 需要一定的资源消耗,例如 CPU、内存和磁盘空间。 3. 不适合小型应用: MongoDB 不适合小型应用,例如...
总而言之,这份“PHP操作MONGODB详细文档”是一份全面且实用的学习资源,适合那些希望使用PHP与MongoDB进行数据交互的开发者。通过阅读和实践,开发者不仅可以掌握基本的数据库操作,还能深入理解MongoDB的特性和PHP...
### MongoDB学习手册精要知识点概览 #### 一、MongoDB简介 MongoDB,源于英文单词“humongous”,意指其设计初衷在于处理海量数据。作为一款开源、面向文档的NoSQL数据库,MongoDB凭借其灵活性和高性能,迅速成为...
总的来说,"php封装的mongodb操作类.zip" 提供了一个集成化的解决方案,使得PHP开发者可以更加便捷地利用MongoDB的强大功能,同时降低了学习和使用成本。通过这个类库,开发者可以专注于业务逻辑,而不是数据库的...
《深入解析ThinkPHP6与MongoDB的整合及问题修复》 在现代Web开发中,ThinkPHP6(简称TP6)作为一个流行的PHP框架,为开发者提供了高效、便捷的开发...在这个过程中,不断学习和探索,对提升我们的IT专业技能大有裨益。
通过分析这些文件,开发者可以学习如何建立数据库连接,执行CRUD操作,以及如何通过log.php类记录和处理日志信息。 在实际应用中,了解如何使用MongoDB Driver进行数据操作是非常重要的。这包括理解BSON(Binary ...
### MongoDB知识点学习手册 #### 一、Mongodb简介 MongoDB 是一个开源的、面向文档存储的数据库系统,属于 NoSQL 数据库的一种。其名称来源于单词 "humongous"(巨大的),表明 MongoDB 设计用于处理大规模的数据...
PHP 配置 MongoDB 扩展、安装 MongoDB 服务教程 本教程旨在指导读者如何配置 PHP 的 MongoDB ...通过本教程,读者可以学习如何配置 PHP 的 MongoDB 扩展,并安装 MongoDB 服务,以实现 MongoDB 数据库的连接和操作。
1. **mongodb快速入门-基本操作.doc**:这份文档可能介绍了MongoDB的基本概念,如数据库、集合、文档,以及插入、查询、更新和删除数据的基本命令。 2. **php操作mongodb和mongodb的权限机制.doc**:这个文档应该...