MongoDB学习笔记[持续更新中...]
来源:互联网 发布:网络百家家乐能玩吗? 编辑:程序博客网 时间:2024/05/11 17:25
MongoDB学习笔记
$m = Yii::app()->mongodb;
1、插入数据:
插入操作(向user表中插入数据) 注:如果user表不设置唯一索引
$m->insert('user', array('id'=>20,'username'=>'liangpz521','email'=>'liangpz521@163.com'));
另一种数据格式
$m->insert('user', array('id'=>20,'username'=>'liangpz521','attributes'=>array('age'=>20,'sex'=>'Mr','birthday'=>'1982-10-30')));
2、查找数据
$m->findOne('user',array('id'=>20));
$m->findOne('test_table', array('attributes.sex'=>'Mr'),array('id')); //只查询id 第三个参数表示要查询的字段
3、更新数据
//全部更新数据 数据存在时更新 不存在时直接添加
$m->update('user',array('id'=>20),array('usernmae'=>'eboss'); //这样的修改会id=1的数据替换成字段只有username
如果数据中有多个字段,但修改时只想修改一个字段 那么就要用到$set了
$m->update('user',array('id'=>20),array('$set'=>array('username'=>'eboss')));//只修改username 其它字段都存在
$m->update('user', array('id'=>20),array('$set'=>array('attributes.age'=>30));
4、$set修改器用法
就是相当于sql的set field = value,全部数据类型都支持$set。例:
//如果没有sex属性 则添加,有的话刚更新,修改时不用$修改器整个文档将被替换
$m->update("test_table", array("id"=>20),array('$set'=>array("attributes.sex"=>'Mr')));
5、$unset修改器
//如果要删除一个或多个已有了字段或属性可以用unset
$m->update("test_table", array("id"=>20),array('$set'=>array("attributes.sex"=>'Mr')));
6.$inc修改器
//此修改器只用于整数,正整数和双精浮点数的增加或减少 例如:更新浏览量时(增加)或扣除积分时(减少)
$m->update("test_table", array("id"=>20),array('$inc'=>array("attributes.hits"=>1)));//增加 (因初始时无此字段,所以会自动添加)
$m->update("test_table", array("id"=>20),array('$inc'=>array("attributes.hits"=>10)));//执行之后 hits变成11
$m->update("test_table", array("id"=>20),array('$inc'=>array("attributes.hits"=>-1)));//减少
7.$push用法
把value追加到field里面去,field一定要是数组类型才行,如果field不存在,会新增一个数组类型加进去。例:
//$m->update('test_table', array('itemid'=>20),array('title'=>'开发语言有哪些?','comments'=>array());
$comment = array('author'=>'china','lang'=>'ruby','date'=>'2014-02-05');
$m->update('test_table',array('itemid'=>20),array('$push'=>array('comments'=>$comment)));//每次追加一条评论 其它属性不变
8、$ne修改器
如果有这种情况:一个人只允许只允许评论一次,那么我们在添加新的评论时,就需要判断要添加的评论是否已经存在了。
$ne修改器就是判断是否不存在某条记录,不存在的时候才执行某个操作。
接着上面的例子,我们先查看,评论中没有lisi的评论的话,我们就插入一条新的lisi的评论:
db.blog.update({"itemid":"20","comments.author":{"$ne":"china"}},{"$push":{"comments":{"name":"author","lang":"java","date":"2014-02-05"}}});
php代码实例
$comment = array('author'=>'china','lang'=>'javascript');
$m->update('test_table',array('itemid'=>20),array('comments.author'=>array('$ne'=>'china'),'$push'=>array('comment'=>$comment)));
现在,如果我们再次执行上面的update代码,就不会再添加china的评论了。这里我们就不再演示了。
8、$addToSet修改器
这个修改器其实做的就是上面一样的事情。
它会自动的判断某个键是否存在重复的值。不存在才添加记录。现在如果有一个关于用户信息的文档如下:
$m->insert('user',array('name'=>'china','email'=>array('liangpz521@163.com','pzliang@163.com')));
$m->update('user',array('name'=>'china'),array('$addToSet'=>array('email'=>'liangpz521@163.com')));
执行update后 liangpz521@163.com此邮箱不会添加的email列表中(因为列表中已存在此邮箱)
8.upsert用法(更新时用)
默认时为false
$m->update('user',array('record'=>28),array('$inc'=>array('record'=>3)),array('upsert'=>false));
等价于
$m->update('user',array('record'=>28),array('$inc'=>array('record'=>3)));
当为false时 查找分数是28的 然后把这个分数增加3
当为true时,查询不到时自动向表中添加一条分数是31的数据(增加3后) 每运行一回就会添加一条信息(会有很多重复信息)
/** 删除指定MongoId **/
$id = new MongoId(“4d638ea1d549a02801000011″);
$collection->remove(array(‘_id'=>(object)$id));
/*
$m = Yii::app()->mongodb;
1、插入数据:
插入操作(向user表中插入数据) 注:如果user表不设置唯一索引
$m->insert('user', array('id'=>20,'username'=>'liangpz521','email'=>'liangpz521@163.com'));
另一种数据格式
$m->insert('user', array('id'=>20,'username'=>'liangpz521','attributes'=>array('age'=>20,'sex'=>'Mr','birthday'=>'1982-10-30')));
2、查找数据
$m->findOne('user',array('id'=>20));
$m->findOne('test_table', array('attributes.sex'=>'Mr'),array('id')); //只查询id 第三个参数表示要查询的字段
3、更新数据
//全部更新数据 数据存在时更新 不存在时直接添加
$m->update('user',array('id'=>20),array('usernmae'=>'eboss'); //这样的修改会id=1的数据替换成字段只有username
如果数据中有多个字段,但修改时只想修改一个字段 那么就要用到$set了
$m->update('user',array('id'=>20),array('$set'=>array('username'=>'eboss')));//只修改username 其它字段都存在
$m->update('user', array('id'=>20),array('$set'=>array('attributes.age'=>30));
4、$set修改器用法
就是相当于sql的set field = value,全部数据类型都支持$set。例:
//如果没有sex属性 则添加,有的话刚更新,修改时不用$修改器整个文档将被替换
$m->update("test_table", array("id"=>20),array('$set'=>array("attributes.sex"=>'Mr')));
5、$unset修改器
//如果要删除一个或多个已有了字段或属性可以用unset
$m->update("test_table", array("id"=>20),array('$set'=>array("attributes.sex"=>'Mr')));
6.$inc修改器
//此修改器只用于整数,正整数和双精浮点数的增加或减少 例如:更新浏览量时(增加)或扣除积分时(减少)
$m->update("test_table", array("id"=>20),array('$inc'=>array("attributes.hits"=>1)));//增加 (因初始时无此字段,所以会自动添加)
$m->update("test_table", array("id"=>20),array('$inc'=>array("attributes.hits"=>10)));//执行之后 hits变成11
$m->update("test_table", array("id"=>20),array('$inc'=>array("attributes.hits"=>-1)));//减少
7.$push用法
把value追加到field里面去,field一定要是数组类型才行,如果field不存在,会新增一个数组类型加进去。例:
//$m->update('test_table', array('itemid'=>20),array('title'=>'开发语言有哪些?','comments'=>array());
$comment = array('author'=>'china','lang'=>'ruby','date'=>'2014-02-05');
$m->update('test_table',array('itemid'=>20),array('$push'=>array('comments'=>$comment)));//每次追加一条评论 其它属性不变
8、$ne修改器
如果有这种情况:一个人只允许只允许评论一次,那么我们在添加新的评论时,就需要判断要添加的评论是否已经存在了。
$ne修改器就是判断是否不存在某条记录,不存在的时候才执行某个操作。
接着上面的例子,我们先查看,评论中没有lisi的评论的话,我们就插入一条新的lisi的评论:
db.blog.update({"itemid":"20","comments.author":{"$ne":"china"}},{"$push":{"comments":{"name":"author","lang":"java","date":"2014-02-05"}}});
php代码实例
$comment = array('author'=>'china','lang'=>'javascript');
$m->update('test_table',array('itemid'=>20),array('comments.author'=>array('$ne'=>'china'),'$push'=>array('comment'=>$comment)));
现在,如果我们再次执行上面的update代码,就不会再添加china的评论了。这里我们就不再演示了。
8、$addToSet修改器
这个修改器其实做的就是上面一样的事情。
它会自动的判断某个键是否存在重复的值。不存在才添加记录。现在如果有一个关于用户信息的文档如下:
$m->insert('user',array('name'=>'china','email'=>array('liangpz521@163.com','pzliang@163.com')));
$m->update('user',array('name'=>'china'),array('$addToSet'=>array('email'=>'liangpz521@163.com')));
执行update后 liangpz521@163.com此邮箱不会添加的email列表中(因为列表中已存在此邮箱)
8.upsert用法(更新时用)
默认时为false
$m->update('user',array('record'=>28),array('$inc'=>array('record'=>3)),array('upsert'=>false));
等价于
$m->update('user',array('record'=>28),array('$inc'=>array('record'=>3)));
当为false时 查找分数是28的 然后把这个分数增加3
当为true时,查询不到时自动向表中添加一条分数是31的数据(增加3后) 每运行一回就会添加一条信息(会有很多重复信息)
/** 删除指定MongoId **/
$id = new MongoId(“4d638ea1d549a02801000011″);
$collection->remove(array(‘_id'=>(object)$id));
/*
0 0
- MongoDB学习笔记[持续更新中...]
- MongoDB文档学习笔记(持续更新中)
- 学习笔记,持续更新中
- ACE学习笔记--持续更新中
- lua学习笔记(持续更新中)
- ACE学习笔记--持续更新中
- Sybase数据库学习笔记【持续更新中】
- python 学习笔记 持续更新中
- EnCache 学习笔记(持续更新中)
- PRML学习笔记持续更新中~
- 天涯学习笔记(持续更新中。。。。)
- Hadoop学习笔记---持续更新中。。。
- Python学习笔记(持续更新中)
- scala 学习笔记-持续更新中
- mongodb常用命令笔记(持续更新)
- MongoDB学习——持续更新
- Mongodb 使用小结(持续更新中)
- [SQLite]学习笔记(持续更新)
- awk 学习(三) 应用示例+
- TI扫描二维码
- awk
- Handler及其用法
- Android项目全局变量的定义
- MongoDB学习笔记[持续更新中...]
- 《黑马程序员》 怎么使用java中的枚举方法
- oracle之归档
- 九度oj 题目1002:Grading 【ZJU2011考研机试题2】
- 安全禁用Mac OS的开机音效(“咣”的声音) by 兔子@cppblog
- linux 服务器常用操作
- RC4加解密
- 抱明月而长终;知不可乎骤得
- sql(1)