【问题标题】:mongodb query search inside array PHP数组PHP内的mongodb查询搜索
【发布时间】:2018-11-08 14:55:30
【问题描述】:

我正在尝试查询 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]]);

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

【问题讨论】:

    标签: php mongodb mongodb-query


    【解决方案1】:

    MongoDB 中的_id 不是字符串而是 ObjectId,所以你必须正确传递它才能查询

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

    【讨论】:

    • 如此简单,如此正确.. 我现在觉得自己很愚蠢 :) 谢谢!我会接受你的回答,因为你也包含了 ObjectID 类。
    【解决方案2】:

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

    所以你可以试试这个

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

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

    【讨论】:

    • 感谢这完美无瑕的工作,但看到另一个人快了 2 分钟,答案几乎相同,我会接受他,但两者都会得到我的支持!
    猜你喜欢
    • 1970-01-01
    • 2015-06-29
    • 2015-07-17
    • 2020-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    相关资源
    最近更新 更多