PHP库 查询Mongodb中的文档ID的方法

在IBM我的一份新工作是一名开发的后勤人员。那意味着我的大部分时间是在和数据库打交道。在我的工作流程中,我花了一些时间在MongoDB上面——这是一个文档数据库。但是在通过ID来检索记录这个操作上面我碰到了一些问题。下面的代码是最终版本,以后碰到类似的问题我可以直接引用它。如果大家也需要,希望下面对大家有所帮助。

MongoDB 和 IDs

当我向一个集合中插入数据的时候,我并没有设置_id字段;如果这个字段是空的话,那么MongoDB将要自动生成一个ID来使用,这对我来说是非常不错的。然而,当我使用MongoDB生成的标识符的时候,这样就会出现问题。

如果我使用db.posts.find()来检索我的数据(我的集合被称为posts),那么数据开起来如下所示:

{ "_id" : ObjectId("575038831661d710f04111c1"), ...

因此,如果我想用ID来检索数据的话,我还需要包含ObjectId方法来访问ID。

使用PHP库

当我使用PHP来做这个事情的时候,我在使用这个新的PHP类库的时并没有找到一个合适的例子(但是,这个类库确实是一个非常不错的库)。在以前的版本中,这个库使用一个叫做MongoID的类来实现。但是我知道这并不是我想要的——但是我确实可以通过这个类来检查文档。因此如果你仅仅能找到以前代码中的例子,那了解这个方法还是很有用的。
通过用这个PHP库将一个ID传给MongoDB,你需要构造一个MongoDB\BSON\ObjectID实例。下面的例子就是通过文档的Id来检索博客中的文档。

$post = $posts->findOne(["_id" => new MongoDB\BSON\ObjectID($id)]);

然后,我将要更新这条记录——这个博客帖子在这条记录中还包含有嵌入的评论,因此向得到_id的这条记录中的评论集合中添加一个数组,

$result = $posts->updateOne(
   ["_id" => new MongoDB\BSON\ObjectID($id)],
   ['$push' => [
"comments" => $new_comment_data
      ]
]);

最后希望本文对大家有所帮助。谢谢大家对本站的支持!

(0)

相关推荐

  • Thinkphp使用mongodb数据库实现多条件查询方法

    有个项目用了mongodb数据库,查询条件有and也有or,按Thinkphp官方手册,使用复合查询(_complex),getLastSql输出查询语句,发现查询条件是空的.用字符串模式查询(_string),请求字符串查询(_query)无法满足需求.估计用mongodb的用户不多,thinkphp官方对这方面支持也不够.打开thinkphp的mongodb驱动,Thinkphp/Extend/Driver/Db/DbMongo.class.php,找到protected function

  • 解析PHP中常见的mongodb查询操作

    复制代码 代码如下: <?php// 欄位字串為$querys = array("name"=>"shian"); // 數值等於多少$querys = array("number"=>7); // 數值大於多少$querys = array("number"=>array('$gt' => 5)); // 數值大於等於多少$querys = array("number"=&g

  • php操作MongoDB基础教程(连接、新增、修改、删除、查询)

    复制代码 代码如下: //连接localhost:27017$conn = new Mongo(); //连接远程主机默认端口$conn = new Mongo('test.com'); //连接远程主机22011端口$conn = new Mongo('test.com:22011'); //MongoDB有用户名密码$conn = new Mongo("mongodb://${username}:${password}@localhost") //MongoDB有用户名密码并指定数

  • 在php7中MongoDB实现模糊查询的方法详解

    前言 在实际开发中, 有不少的场景需要使用到模糊查询, MongoDB shell 模糊查询很简单: db.collection.find({'_id': /^5101/}) 上面这句就是查询_id以'5101'开始的内容. 在老的MogoDB中模糊查询挺简单的,这里简单记录下模糊查询的操作方式: 命令行下: db.letv_logs.find({"ctime":/uname?/i}); php操作 $query=array("name"=>new Mongo

  • PHP中MongoDB数据库的连接、添加、修改、查询、删除等操作实例

    PHP 扩展mongon.mod.dll下载http://cn.php.net/manual/en/mongo.installation.php#mongo.installation.windows 然后php.ini添加 extension=php_mongo.dll 最后phpinfo() 查找到 表标PHP已经自带了mongo功能,你就可以操作下面的代码(但是你必须有安装mongodb服务器) 一.连接数据库 使用下面的代码创建一个数据库链接 复制代码 代码如下: <?php $conne

  • PHP库 查询Mongodb中的文档ID的方法

    在IBM我的一份新工作是一名开发的后勤人员.那意味着我的大部分时间是在和数据库打交道.在我的工作流程中,我花了一些时间在MongoDB上面--这是一个文档数据库.但是在通过ID来检索记录这个操作上面我碰到了一些问题.下面的代码是最终版本,以后碰到类似的问题我可以直接引用它.如果大家也需要,希望下面对大家有所帮助. MongoDB 和 IDs 当我向一个集合中插入数据的时候,我并没有设置_id字段:如果这个字段是空的话,那么MongoDB将要自动生成一个ID来使用,这对我来说是非常不错的.然而,当

  • MongoDB中对文档的增删查改基本操作方法总结

    插入文档:insert() 方法 要插入数据到 MongoDB 集合,需要使用 MongoDB 的  insert() 或 save() 方法. 语法: insert() 命令的基本语法如下: >db.COLLECTION_NAME.insert(document) 例子:  >db.mycol.insert({    _id: ObjectId(7df78ad8902c),    title: 'MongoDB Overview',     description: 'MongoDB is

  • MongoDB集合中的文档管理

    上一博客写了集合的管理,集合里面存放的是文档,因此聪明的你应该能想到这篇是学习文档管理.要说标题应该是文档管理,不过对于文档的管理都是先获得集合对象,在集合对象上调用方法管理文档,所以标题还是对集合的管理. 在集合管理中,要管理集合首先要获得这个集合,同样文档管理也是要先获得集合对象,然后通过集合对象管理文档. 一.将文档添加到集合中 为什么要先说添加呢,因为不添加就没法说下面的查找.将文档添加到一个集合中,首先需要得到集合对象,通过几个对象调用insert(document)或save(doc

  • SQLServer中JSON文档型数据的查询问题解决

    近日在项目中遇到一个问题: 如何在报表中统计JSON格式存储的数据? 例如有个调查问卷记录表,记录每个问题的答案. 其结构示意如下(横表设计) Id user date Q1_Answer Q2_Answer Q3_Answer 行Id 答题用户 答题日期 问题一结果 问题二结果 问题三结果 在[Q1_Answer].[Q2_Answer].[Q3_Answer]中记录的数据格式是JSON文档内容,因为是选项值,而且考虑到可能有多选, 所以存储的格式如下: 1 [ {"code":&q

  • mongodb如何对文档内数组进行过滤的方法步骤

    本文介绍了mongodb如何对文档内数组进行过滤的方法步骤,分享给大家,具体如下: mongodb文档内包含数组,需要将数组中符合条件的数据过滤出来并返回结果集,可以用两种方式来查询group或filter. 数据源: { "_id" : ObjectId("5bbcc0c9a74db9804e78a157"), "uid" : "1000001", "name" : "zhangsan"

  • MongoDB基础之文档操作

    一.插入文档 文档的数据结构和 JSON 基本一样. 所有存储在集合中的数据都是 BSON 格式.BSON 是一种类似 JSON 的二进制形式的存储格式,是 Binary JSON 的简称. 1.语法 1.db.collection.insert(): 向集合中插入文档,若插入的数据主键已经存在,则会抛 org.springframework.dao.DuplicateKeyException 异常,提示主键重复,不保存当前数据. db.collection.insert(document) 2

  • Java如何操作MongoDB常用API文档

    目录 Java操作MongoDB常用API文档 1.查询指定字段 2.按条件查询 3.对查询结果排序 4.获取满足条件的前n条数据 Java使用MongoDB数据库相关API小记 MongDB数据库使用 首先介绍我的使用环境 Java操作MongoDB常用API文档 1.查询指定字段 collection.find().projection(fields(include("username","pwd"),excludeId()));//返回username与pwd

  • 关于JS与jQuery中的文档加载问题

    jquery中的$(document).ready()类似于javascript中的window.onload(),但是其中还是有很大区别的 1.jquery中的可以简化为$().ready(),$(function),   而js却不行必须全部写完. 2.同时js的window.onload()只能有一个,而jquery的$(document).ready()却可以有多个. 3.最重要的一点是window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行.   $(documen

  • 对tensorflow中cifar-10文档的Read操作详解

    前言 在tensorflow的官方文档中得卷积神经网络一章,有一个使用cifar-10图片数据集的实验,搭建卷积神经网络倒不难,但是那个cifar10_input文件着实让我费了一番心思.配合着官方文档也算看的七七八八,但是中间还是有一些不太明白,不明白的mark一下,这次记下一些已经明白的. 研究 cifar10_input.py文件的read操作,主要的就是下面的代码: if not eval_data: filenames = [os.path.join(data_dir, 'data_b

  • Java程序中Doc文档注释示例教程

    目录 Doc注释规范 @符号的用处 如何生成Doc文档 第一个:Dos命令生成 第二个:IDE工具生成 许多人写代码时总不喜欢写注释,每个程序员如此,嘿嘿,我也一样 不过,话说回来,该写还是要写哦!没人会喜欢一个不写注释的程序员,当然,也没有一个喜欢写注释的程序员,今天,我们就来说说Java注释之一--Doc注释 我们知道,Java支持 3 种注释,分别是单行注释.多行注释和文档注释,我们来看看他们的样子 //单行注释   /* 多行注释 */   /** *@... *.... *文档注释 *

随机推荐