Поиск по запросу mongodb внутри массива PHP - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь выполнить запрос по определенному ключу в mongodb, однако я получаю пустые результаты, в то время как должна возвращаться 1 запись. Я смотрел на разные вопросы, которые в основном одинаковы, но их ответы мне не помогли.

Я получил следующую структуру в моем монго, например

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

В настоящее время я пробовал следующий запрос:

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

Однако это возвращает ошибку

unknown operator: $oid

Теперь, что бы я ни пытался, он либо возвращает "неизвестный оператор", либо ничего не возвращает. Я также попытался переключить запрос и использовать идентификатор внутри raw следующим образом.

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

но это ничего не возвращает для меня. Поэтому мне было интересно, что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

$oid это не поле. Это просто обозначение, что это mongodb ObjectId

Так что вы можете просто попробовать это

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

или

$this->collection->find([ 'raw.id' => $id ])
0 голосов
/ 08 ноября 2018

_id в MongoDB - это не строка, а ObjectId, поэтому вы должны передать его правильно на запрос

$this->collection->find(['_id' => new MongoDB\BSON\ObjectID($id)])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...