mongodb查询搜索数组内的PHP

时间:2018-11-08 14:55:31

标签: php mongodb mongodb-query

我正在尝试查询mongodb中的特定键,但是我始终以空结果结尾,而它应该返回1条记录。我看了一些基本相同的不同问题,但他们的回答对我没有帮助。

例如,我的mongo中具有以下结构

{
    "_id": {
        "$oid": "5bb7388354f02b041b6819b2"
    },
    "raw": {
        "etag": "W/\"CQAAABYADtqt1sMfi5R4onmiTyvUAALqHFp9\"",
        "id": "abcdefg"
    }
}

我目前已经尝试了以下查询:

$id = "5bb7388354f02b041b6819b2";
$this->collection->find(['_id' => ['$oid' => $id]]);

但是这会返回错误

unknown operator: $oid

无论我尝试什么,它要么返回“未知运算符”,要么不返回任何内容。我还尝试如下切换查询并使用raw内的ID。

$id = "abcdefg";
$this->collection->find(['raw' => ['id' => $id]]);

但这对我没有任何回报。所以我想知道,我在做什么错了?

2 个答案:

答案 0 :(得分:1)

MongoDB中的_id不是字符串而是ObjectId,因此您必须将其传递给查询对象

$this->collection->find(['_id' => new MongoDB\BSON\ObjectID($id)])

答案 1 :(得分:1)

$oid不是该字段。只是表示它是mongodb ObjectId

所以您可以简单地尝试一下

$this->collection->find([ '_id' => $id ])

$this->collection->find([ 'raw.id' => $id ])