вернуть элемент массива используя index в mongodb с php

0

Я хочу знать, как вернуть элемент массива, используя индекс в mongodb с php:

findOne(array('num[1]' => 'field_id')))

есть ли способ сделать это?

Теги:
mongodb-query

2 ответа

2
Лучший ответ

MongoDB имеет "точечную нотацию", которая немного отличается от формы JavaScript, потому что это не JavaScript:

findOne(array("num.1" => "field_id"))

Отмечая, что индексы массива n-1 каждой позиции, значит, это означает "второй" элемент массива.

Обратите внимание, что это не просто возвращает "только этот элемент массива" и является просто запросом "сопоставить" элемент массива в позиции. Если вы ожидаете возвращения только согласованного элемента, то вы также используете оператор positional $ и "проецирование":

findOne(array("num.1" => "field_id"),array( "num.$" => 1))
  • 0
    по какой-то причине я получаю «ноль» таким образом. что мне делать, если я хочу вернуть "comment" {"num": [{"group": "187", "Ques": "question 1", "reply": [{"desc": "answer 1" , "right": true}, {"desc": "answer 2", "right": false}, {"desc": "answer 3", "right": false}, {"desc": "answer 4 "," right ": false}]," comment ":" comment 1 "}]}
  • 0
    @ValRus Можете ли вы показать точную структуру вашего документа в том виде, в каком она отображается в «оболочке» монго. Потому что только в содержании вашего комментария поле не "num", а фактически "comment.num" . Поймите отчетливую разницу.
Показать ещё 4 комментария
0

Вы можете сделать это следующим образом:

$id = new MongoId($text_id);
$collection = $db->selectCollection ("mytable");
$doc = $collection->findOne(array('_id' => $id));
echo json_encode($doc); 
  • 1
    Я думаю, что вопрос был «как сопоставить элемент в массиве на основе его позиции». Это не то, что вы отвечаете, хотя.
  • 0
    Возможно, так. я не совсем уверен
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню