当前位置: 首页 > news >正文

mongodb在PHP下的应用学习笔记

1、连接

mongodb默认端口是:27017,因此我们连接mongodb:$mongodb = new Mongo('localhost') 或者指定IP与端口 $mongodb = new Mongo('192.168.127.1:27017') 端口可改变

若mongodb开启认证,即--auth,则连接为: $mongodb = new Mongo('root:w888168@localhost:27017');

2、选择数据库

$db = $mongodb->selectDBs('dbname'); 或者直接指定数据库名(因为mongodb可以直接创建不存在的数据库) : $db = $mongodb->dbname;

3、选择集合(collection)

$tables = $db->selectColletion('tablename')或者 $tables = $db->tablename;

接下来就可以操作集合了

4、插入新文档(document)

collection插入数据,如一个人的信息

$one = array(

'name' => 'lily';

'age'  => 0,

'hobby' => array(

'dance',

'swim',

'music'

),

);

$res = $tables -> insert($one,true);

 

第二个参数用于等待MongoDB完成操作,以便确定是否成功,默认值为false,当有大量记录插入时使用该参数会比较有用。 插入新文档后,MongoDB会返回一个记录标识。

 

结果为:1,则说明已经插入了 

5、删除文档

删除文档比较简单: $res = $tables->remove(array('name'=>'lily'));

注意:这里是将满足条件的都删除,如果只有删除第一个满足条件的文档,则添加第二个参数为true即可

6、查找文档

定义一个过滤器:$filter = array('name'=>'lily');

$res = $tables -> find($filter);

查找一个 : $res = $tables -> findOne($filter);

此外,还可以在过滤器里添加比较

 

例,获取sessions大于10的信息:
$filter = array('sessions' => array('$gt' => 10)); (gt -- > lt--< gte -- >= lte <=)
$cursor = $collection->find($filter);

 

返回的接口为游标

 

有一个重要的细节需要注意,只有当需要结果的时候查询才会被执行,在第1个例子中,当foreach循环开始时,查询才被执行。
这是个很有用的特性,因为这可以通过在游标(cursor)中增加选项来取回结果,恰好在定义查询后,执行查询前这个时刻。例如,可以设置选项来执行分页,或者获取指定数目的匹配的文档。
$total = $cursor->total();
$cursor->limit(20)->skip(40);
foreach($cursor as $user) {
}

 

转载于:https://www.cnblogs.com/dyllove98/p/3186851.html

相关文章:

  • 最长公共子序列问题(不连续)
  • Oracle动态执行表不可访问
  • 给公司服务器装web服务器,邮件服务器——安装SecureCRT
  • Set Keep-Alive Values---C到C#代码的转换
  • poj 2388 Who's in the Middle(快速排序求中位数)
  • com.javax.servlet 慢慢看完慢慢学完
  • margin标记可以带一个、二个、三个、四个参数,各有不同的含义。
  • jQuery – 8.事件和事件参数
  • 面试题20:栈的压入、弹出序列
  • 求字符串组合
  • PHP event 事件机制
  • 基于协同过滤的推荐引擎
  • 连续加班易“脑残”,程序员做做白日梦未尝不是一件好事!
  • Manacher模板,kmp,扩展kmp,最小表示法模板
  • linux修改文件读写执行权限命令chmod
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • CentOS从零开始部署Nodejs项目
  • Create React App 使用
  • ESLint简单操作
  • JAVA 学习IO流
  • Redis字符串类型内部编码剖析
  • Vue 动态创建 component
  • 读懂package.json -- 依赖管理
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 开发基于以太坊智能合约的DApp
  • 什么软件可以剪辑音乐?
  • 使用common-codec进行md5加密
  • 跳前端坑前,先看看这个!!
  • 小程序 setData 学问多
  • 再次简单明了总结flex布局,一看就懂...
  • 找一份好的前端工作,起点很重要
  • MyCAT水平分库
  • ​2021半年盘点,不想你错过的重磅新书
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (多级缓存)缓存同步
  • (二十三)Flask之高频面试点
  • (区间dp) (经典例题) 石子合并
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转) 深度模型优化性能 调参
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET 解决重复提交问题
  • .netcore如何运行环境安装到Linux服务器
  • .NET关于 跳过SSL中遇到的问题
  • .NET与 java通用的3DES加密解密方法
  • @RunWith注解作用
  • @vue/cli脚手架
  • @WebServiceClient注解,wsdlLocation 可配置
  • [ACTF2020 新生赛]Include
  • [AutoSar]BSW_OS 01 priority ceiling protocol(PCP)