参看手册,php官方的http://us2.php.net/manual/en/mongo.manual.php
也可以参看mongodb官方的教程
数据库连接
⑴默认格式
$m = new Mongo();
//这里采用默认连接本机的27017端口,当然你也可以连接远程主机如 192.168.0.4:27017,如果端口是27017,端口可以省略
⑵标准连接
$m = new Mongo("mongodb://${username}:${password}@localhost");
实例:$m = new Mongo("mongodb://127.0.0.1:27017/admin:admin");
数据库的用户名和密码都是admin
数据库操作:
插入数据:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<?php $m = new Mongo( "mongodb://127.0.0.1:27017/admin:admin" ); //这里采用默认连接本机的27017端口,当然你也可以连接远程主机如 192.168.0.4:27017,如果端口是27017,端口可以省略
$db = $m -> comedy; // 选择comedy数据库,如果以前没该数据库会自动创建,也可以用$m->selectDB("comedy");
$collection = $db ->collection; //选择comedy里面的collection集合,相当于RDBMS里面的表,也-可以使用
$db ->selectCollection( "collection" );
/*********添加一个元素**************/ $obj = array ( "title" => "php1" , "author" => "Bill Watterson" );
$collection ->insert( $obj ); //将$obj 添加到$collection 集合中
/*********添加另一个元素**************/ $obj = array ( "title" => "huaibei" , "online" => true );
$collection ->insert( $obj );
//$query = array( "title" => "huaibei" ); $query = array ( "_id" => $obj [ '_id' ] );
$cursor = $collection ->find( $query );
foreach ( $cursor as $obj ) { //遍历所有集合中的文档
echo $obj [ "title" ] . "\n" ;
echo $obj [ "_id" ] . "\n" ;
} $m ->close(); //断开MongoDB连接
|
结果:
带条件的查询
查询 title为huaibei的字段
1 $query = array( "title" => "huaibei" );
2 $cursor = $collection->find( $query ); // 在$collectio集合中查找满足$query的文档
常用的SQL转化为mongodb的条件
mysql: id = 123
mongo: array('id'=>123)
mysql: name link '%bar%'
mongo: array('name' => new MongoRegex('/.*bar.*/i'))
mysql: where id > 10
mongo: array('id' => array('$gt' => 10))
mysql: where id >= 10
mongo: array('id' => array('$gte' => 10))
mysql: where id < 10
mongo: array('id' => array('$lt' => 10))
mysql: where id <= 10
mongo: array('id' => array('$lte' => 10))
mysql: where id > 1 and id < 10
mongo: array('id' => array('$gt' => 1,'$lt' => 10))
mysql: where id <> 10
mongo: array('id' => array('$ne' => 10))
mysql: where id in(123)
mongo: array('id' => array('$in' => array(1,2,3)))
mysql: where id not in(123)
mongo: array('id' => array('$nin' => array(1,2,3)))
mysql: where id = 2 or id = 9
mongo: array('id' => array('$or' => array(array('id'=>2),array('id'=>9))))
mysql: order by name asc
mongo: array('sort'=>array('name'=>1))
mysql: order by name desc
mongo: array('sort'=>array('name'=>-1))
mysql: limit 0,2
mongo: array('limit'=>array('offset'=>0,'rows'=>2))
mysql: select name,email
mongo: array('name','email')
mysql: select count(name)
mongo: array('COUNT') //注意:COUNT为大写
更详细的转换参考http://us2.php.net/manual/en/mongo.sqltomongo.php
注意事项
查询时,每个Object插入时都会自动生成一个独特的_id,它相当于RDBMS中的主键,用于查询时非常方便 (_id每一都不同,很像自动增加的id)
如:
1 <?php 2 3 $person = array ( "name" => "joe" );
4 5 $people ->insert( $person );
6 7 $joe = $people ->findOne( array ( "_id" => $person [ '_id' ]));
8 9 ?> |
数据更改
添加一个新字段
/** 原字段:
* {"username" : "...", "password" : "...", "email" : "..."}
*/
$coll->update(array("username" => "joe"), array('$set' => array("twitter" => "@joe4153")));
/** 操作后的字段:
* {"username" : "joe", "password" : "...", "email" : "...", "twitter" : "@joe4153"}
*/
更改字段值
/** 原的数据
* {"username" : "...", "password" : "...", "email" : "..."}
*/
$coll->update(array("username" => "joe"), array("userId" => 12345, "info" => array(
"name" => "joe", "twitter" => "@joe4153", "email" => "..."), "likes" => array()));
/** 操作后的数据:
* {
* "userId" : 12345,
* "info" : {
* "name" : "joe",
* "twitter" : "@joe4153",
* "email" : "..."
* },
* "likes" : []
* }
*/
比较复杂的更新
更改author为john的名称
{
"_id" : ObjectId("4b06c282edb87a281e09dad9"),
"content" : "this is a blog post.",
"comments" :
[
{
"author" : "Mike",
"comment" : "I think that blah blah blah...",
},
{
"author" : "John",
"comment" : "I disagree."
}
]
}
操作:<?php
$blog->update(
array("comments.author" => "John"),
array('$set' => array('comments.$.author' => "Jim")));
?>
删除一个数据库
$m -> dropDB("comedy");
列出所有可用数据库
$m->listDBs(); //无返回值
转载一部分mongodb常用的数据库方法
MongoDB中有用的函数:
创建一个MongoDB对象
http://us.php.net/manual/en/mongodb.construct.php
$mo = new Mongo();
$db = new MongoDB($mo,’dbname’);//通过创建方式获得一个MongoDB对象
删除当前DB
http://us.php.net/manual/en/mongodb.drop.php
$db = $mo->dbname;
$db->drop();
获得当前数据库名
http://us.php.net/manual/en/mongodb.–tostring.php
$db = $mo->dbname;
$db->_tostring();
选择想要的collection:
A:
$mo = new Mongo();
$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
array MongoCollection::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
MongoCursor MongoCollection::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_dump($r);
}
或者
$cursor = $coll->find($query,$fields);
foreache($cursor as $k=>$v){
var_dump($v);
}
或者
$cursor = $coll->find($query,$fields);
$array= iterator_to_array($cursor);
相关推荐
- **示例**: 输入 `help` 或者 `db.help()` 可以查看基本操作命令的帮助。 ##### 2. 切换/创建数据库 (Use/Create Database) - **命令格式**: `use yourDB` - **功能描述**: 如果指定的数据库不存在,则会自动创建...
在管理和操作MongoDB时,批处理脚本是一个高效的方法,特别是对于执行重复性的任务,如安装、启动、停止和配置服务。以下是根据提供的文件名解析出的MongoDB相关知识点: 1. **安装MongoDB服务**: - `install.bat...
在centos7下安装部署mongodb分片+副本集群常用命令整理,内容包含,安装、配置、启动、访问shell终端等命令
MongoDB常用操作命令大全 数据库常用命令 Collection聚集集合 用户相关 聚集集合查询
mongodb php distinct command --- mongoDb 常用命令
包含对数据库、集合、文档的常用操作。
MongoDB 常用命令 MongoDB 是一个流行的 NoSQL 数据库,提供了丰富的命令来管理和维护数据库。在本文中,我们将介绍一些 MongoDB 常用的命令,包括集合命令、数据库命令和其他命令。 集合命令 1. `db.collection....
MongoDB 使用C++编写,支持多种操作系统,并提供了丰富的查询语言,类似于面向对象的查询,允许执行类似关系数据库的单表查询操作,还支持建立索引来提升查询效率。此外,MongoDB 支持动态模式,即schema-free,这...
- `db.help()`:显示当前数据库可用的操作命令。 - `db.yourColl.help()`:针对特定集合提供帮助,例如`yourColl`集合。 - `db.youColl.find().help()`:关于`find`查询方法的帮助。 2. **切换/创建数据库** - ...
在日常使用中,MongoDB的这些命令对于数据的管理、查询和维护至关重要。通过灵活运用这些命令,开发者可以高效地处理和管理大规模的非结构化和半结构化数据,实现高并发和高性能的数据访问。由于其优秀的性能表现和...
### MongoDB常用操作命令详解 #### 一、启动与配置MongoDB服务 在开始介绍具体的数据库操作之前,我们先了解如何启动和配置MongoDB服务。以下是一些常用的命令: 1. **启动MongoDB服务(默认数据目录)** ```...
本手册涵盖了MongoDB的基础操作,旨在帮助初学者快速掌握其核心命令,以下是15条常用命令的详细说明: 1. **启动MongoDB服务**:在命令行中输入`mongod`启动MongoDB服务器,通常需要指定数据存储目录,如`mongod --...
以下是一些主要的MongoDB操作命令的详细解释: 1. **数据库相关操作**: - `use <database>`:切换当前工作数据库。例如,`use myDatabase` 将会切换到名为myDatabase的数据库。 - `db`:显示当前工作数据库。 -...
本文将深入探讨在MongoDB中常见的数据库操作命令,这些命令对于理解和操作MongoDB至关重要。 首先,让我们来看一下如何根据年龄对数据进行排序。在MongoDB中,可以使用`sort()`函数来对查询结果进行排序。例如,...
MongoDB 数据库常用命令大全 MongoDB 是 NoSQL 数据库系统中比较流行的数据库之一。它也是最接近关系型数据库的,一个数据库可以包含多个集合(Collection),类似于关系数据库中的表;而每个集合中可以存储一组由...
以下是一些关于MongoDB常用SQL操作的关键知识点: 1. **数据模型**:MongoDB基于JSON(JavaScript Object Notation)格式的文档存储数据,这使得它能够存储复杂的数据结构,如嵌套对象和数组。 2. **连接MongoDB**...
在MongoDB中,常用的操作语句可以分为数据定义语言(DDL)和数据操纵语言(DML)。 **DDL操作:** 1. 创建集合(表) - 语法:`db.createCollection("collectionName")` - 实例:创建一个名为`user2`的集合,...
以下是一些MongoDB的常用命令及其详细解释: 1. **创建集合(Collection)**: - `db.createCollection("mycoll", {capped:true,size:100000})`: 这个命令用于创建一个名为`mycoll`的集合,并设置为上限为100000...
本教程将详细介绍MongoDB在Linux环境下的安装步骤,并提供常用命令及实际案例,帮助您快速掌握MongoDB的操作。 首先,让我们来看如何在Linux系统上安装MongoDB。安装过程通常包括以下几个步骤: 1. **下载MongoDB*...
以下是一些MongoDB的常用命令及其详细解释: 1. **停止数据库**: - 使用`control-c`:在终端中按下`control-c`可以中断当前运行的MongoDB进程。 - `use admin`:切换到`admin`数据库,这是一个特殊的角色,可以...