1

我正在用 mongodb 和 php 做项目。所以我正在尝试使用它_id查找记录。在这里,我以这种方式发布 json 值

{"_id": {"$id": "513ea9d4a00b2ade09000001"}}

然后我得到这个值并解码它并用这种方式找到

$obj = json_decode( $json, true);
$result = $collection->find($obj);

但上面的代码给出了错误,因为在 json 中它们是一个像$id. 所以我如何解决上述问题请帮助我。

4

3 回答 3

4

请按照以下示例进行操作:

// 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

你可以在这里找到更多信息。

于 2013-03-12T07:51:41.160 回答
2

从 JSON 字符串来看,它与当前显示的所有示例略有不同。

因为你现在有一个 assoc 数组的对象,它看起来像:

array(
    '_id' => array(
        '$id' => "513ea9d4a00b2ade09000001"
    )
)

您必须提取该$id属性并将其转换为MongoId这样的:

$db->collection->find(new MongoId($obj['$id']));

那会找到你的记录。

于 2013-03-12T10:29:19.900 回答
1

要使用“_id”查找文档,您必须将其类型转换为 MongoId 对象。这可以通过传入array('_id' => new MongoId($valOf_id) )查找查询来完成。

我没有写一个冗长的答案,因为我相信这足以让你明白这一点:-)

于 2013-03-12T08:46:07.807 回答