Поиск по запросу mongodb внутри массива Переполнение стека

Я пытаюсь выполнить запрос по определенному ключу в 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]]);

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

1

Решение

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

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

Другие решения

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

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

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

или же

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector