PHP MongoDB 使用 MongoId Object _id 查询一条记录

Posted

技术标签:

【中文标题】PHP MongoDB 使用 MongoId Object _id 查询一条记录【英文标题】:PHP MongoDB query for one record using MongoId Object _id 【发布时间】:2014-06-24 17:36:32 【问题描述】:

我目前正在学习 MongoDB。我看过查询集合中字段的教程。我想知道如何使用 MongoId Object _id 值在 php 中进行查询。与我的问题最接近的答案是Perl Mongo find object Id。

另外,有没有办法在创建新记录时,将 Object _id 值记录在该记录的另一个字段中?

谢谢。

更新:

除了我在下面选择的答案之外,一位同事也发现了这个:

mongodb php findone() by ID

【问题讨论】:

【参考方案1】:

这应该会有所帮助,来自 mongodb 网站 (http://blog.mongodb.org/post/26903435041/mongodb-for-the-php-mind-part-2):

// This is only a string, this is NOT a MongoId
$mongoid = '4cb4ab6d7addf98506010000';

// You will not find anything by searching by string alone
$nothing = $collection->find(array('_id' => $mongoid));
echo $nothing->count(); // This should echo 0

// THIS is how you find something by MongoId
$realmongoid = new MongoId($mongoid);

// Pass the actual instance of the MongoId object to the query
$something = $collection->find(array('_id' => $realmongoid));
echo $something->count(); // This should echo 1

关于您的部分问题,我不知道有任何自动方式将 objectid 存储在另一个字段中,但我也不知道您为什么要这样做 - 您已经将它存储在 _id 中,为什么你想要它在另一个领域吗?

【讨论】:

jpsf:感谢您的回复。我的第二个问题是关于我在教程中看到的东西,我应该对此进行详细说明。我同意没有必要这样做(只是不知道它是否使使用 MongoDB 进行此类搜索更容易)。

以上是关于PHP MongoDB 使用 MongoId Object _id 查询一条记录的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Mongoid 查看原始 mongoDB 查询

如何将内存中的 MongoDB 与 Rails、Mongoid 和 Rspec 一起使用?

使用 Mongoid 的 MongoDB 对话/私人消息模式

批量查找 mongoDB 记录(使用 mongoid ruby​​ 适配器)

在非 Rails 环境中通过 Mongoid 创建 MongoDB 索引

Ruby on Rails 是 mongodb - mongoid