最近的一个项目中用到了MongoDB,主要是使用MongoDB的PHP扩展。MongoDB的扩展中用于一个用于查询的方法是find()。下面针对在理解MongoDB扩展的find()方法中做的实验做个简单的笔记,同时希望能够帮助别人。

MongoDB的PHP扩展中,可以使用MongoColletion的find($query,$fileds)进行查询,其中find()根据$query的条件进行匹配查询,$query中说明需要返回的字段。使find()的时候,需要注意的事项是,所有待查询的变量都必须使用单引号括起来,这样才不至于用变量的值代替命令。另外一个需要注意的情况是,$fields表示的要返回的项,在$field中所有的要显示的字段都对应与1,而不显示的项对应的值为0,而且0只用于'_id'字段,用于别的字段会导致错误。$query和$都是以数组的形式传递给find(),mongoDB的PHP扩展的参数都是使用数组的形式进行传递。

标准做法下,$fields数组中不会使用引号(这里以及下文如果不进行特别的说明,括号包括大括号和小括号)将0引起来,这样会导致0无法起作用,但是将1引起来却不会有什么影响,提倡大家使用标准做法。 为了说明给$fields字段加引号之后会有什么不同,下面进行几个实验以说明其影响。

一、标准做法

$field数组中'_id'字段的值为0不加引号,其余要显示的所有字段均为1。

图 1 标准做法

当连上MongoDB选择数据库和集合之后使用find()查找,返回的结果是其实是cursors,如果想要显示出来返回的结果,需要使用iterator_to_array()将返回的结果转化为数组的形式。由图 1(b)的结果可以看出,返回的结果中不带有'_id'字段,且返回的结果中数组的key为[0]。这里需要说明一下, MongoDB为每个插入的文档添加一个'_id'字段,且在查找的过程中,如果不指定'_id'字段为0,则其默认出现在返回的结果中。 如图 2(a) (b)所示,在没有指定$query数组中的'_id'字段的时候,默认是输出'_id'字段的,且此时输出的结果中,key不再是以[0]开始的数字下标,而是原来文章中的'_id'字段的值。

图 2 不指定'_id'字段为0的情况

二、将0用引号引起来

如果将0用引号引起来,在$fields字段加入'_id'=>'0'或者'_id'=>"0",则'_id'字段将依然显示出来,且此时返回的结果数组中对应的数组的key也不是从[0]开始的,而是原来的文档中的'_id'字段对应的value值作为数组的'key'值。如下图所示。

图 3 为$fields数组中的'_id'字段加上引号

三、在$fileds数组中除'_id'字段以外使用0

前面已经说过,0只能用在'_id'字段用于控制是否显示'_id'字段的值,但是绝不能用于其他的字段,如果用于其他的字段则导致程序报错。如下图所示,将'tags'字段设置为0,导致程序报错。

图 4 $field数组中别的字段使用0的出错情况

这也就是表明了用于存储返回值的$fields数组中,将想要显示的字段的值设置为1,不设置的字段不显示,但是决不允许在除'_id'字段之外的其余字段使用0。

初学Mongo,以后遇到问题在和大家一起学习。抱歉的是图不太清楚,当时是将图截下来保存在word中,再使用的时候就已经不太清楚了。欢迎吐槽!

最近的一个项目中用到了MongoDB,主要是使用MongoDB的PHP扩展。MongoDB的扩展中用于一个用于查询的方法是find()。下面针对在理解MongoDB扩展的find()方法中做的实验做个简单的笔记,同时希望能够帮助别人。  MongoDB的PHP扩展中,可以使用MongoColletion的find($query,$fileds)进行查询,其中find()根据$que...
赠送jar包: mongodb -driver-sync-4.2.3.jar; 赠送原API文档: mongodb -driver-sync-4.2.3-javadoc.jar; 赠送源代码: mongodb -driver-sync-4.2.3-sources.jar; 赠送Maven依赖信息文件: mongodb -driver-sync-4.2.3.pom; 包含翻译后的API文档: mongodb -driver-sync-4.2.3-javadoc-API文档-中文(简体)版.zip; Maven坐标:org. mongodb : mongodb -driver-sync:4.2.3; 标签: mongodb 、driver、sync、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 Golang的公共API 公制缓存支持 请注意,这并不是要替代来检测 MongoDB 内部。 此应用程序根据所需查询(聚合)以prometheus格式导出​​自定义 MongoDB 指标。 测试版通知 该软件当前是beta版,在发布稳定版本之前,API /配置可能会在没有通知的情况下中断。 获取Prometheus MongoDB 聚合查询导出器(以或打包为 。 对于kubernetes用户, MongoDB 查询导出器有一个正式的Helm图表。 请在阅读安装说明。 $ mongodb _query_exporter 使用-help标志可获取帮助信息。 如果您使用 MongoDB Authoriza
赠送jar包: mongodb -driver-sync-4.2.3.jar; 赠送原API文档: mongodb -driver-sync-4.2.3-javadoc.jar; 赠送源代码: mongodb -driver-sync-4.2.3-sources.jar; 赠送Maven依赖信息文件: mongodb -driver-sync-4.2.3.pom; 包含翻译后的API文档: mongodb -driver-sync-4.2.3-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org. mongodb : mongodb -driver-sync:4.2.3; 标签: mongodb 、driver、sync、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。
默认情况下, MongoDB 查询会返回匹配文档中的所有字段。为了限制 MongoDB 发送给应用大量的无关数据,你可以通过db.collection.find(query,projection)方法来指定或限制要返回的字段。 在没设置projection参数时,查询会返回查询到的文档中的所有字段。例如test集合中添加下面的文档,有5个字段:_id、item、status、size和instock字段,...
MongoDB -Driver-Sync是一种同步式的 MongoDB 数据库驱动程序。它允许开发人员使用同步API的方式与 MongoDB 交互,使用面向对象的编程模型来管理和操作 MongoDB 数据。 MongoDB -Driver-Sync是提供给Java平台上的 MongoDB 用户的一个Java语言驱动程序。它提供了对 MongoDB 的所有核心功能的支持,包括数据查询、插入、更新和删除。在使用 MongoDB -Driver-Sync时,开发人员可以使用BSON文档作为数据存储的格式,对于大数据量的处理也提供了高效的支持。 MongoDB -Driver-Sync还提供了高度灵活和可 扩展 的Schema设计,支持高可用性和自动故障转移,以及分片集群的数据 扩展 。 需要注意的是, MongoDB -Driver-Sync是一种同步式的程序,这意味着在执行数据库操作时,应用程序会被阻塞,直到结果返回。因此,在处理大量数据时,使用异步API的 MongoDB 驱动程序可能会更为适合。但是,对于一些小规模的应用程序, MongoDB -Driver-Sync是一个极好的选择,因为它易于使用,功能丰富,而且文档丰富的API 扩展 也拓展了它的有效范围。