[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: MongoDB
Invis1ble
Всем привет.
Проблема вроде пустяковая, но нигде не могу найти реализацию...
Имеем коллекцию документов, в документах есть вложенные значения.
db.test.findOne({"author.id":3}) - всё норм находит.
Как проделать тоже самое в php ?
Пробовал так:
$collection->findOne(array('author' => array('id' => 3)));

нифига не выходит, получаем null... :(



Спустя 32 минуты, 37 секунд (23.10.2011 - 10:16) Invis1ble написал(а):
Решил попробовать заюзать костыль:
$collection->findOne(bson_decode('{"author.id":3}'));

на что пых мне ответил
Цитата
type 0x74 not supported: 7b 22 61 75 74 68 6f 72 2e 69 64 22 3a 33 7d 00

<_<

Спустя 3 минуты, 35 секунд (23.10.2011 - 10:20) Invis1ble написал(а):
Вобщем только что попробовал (а вдруг ?)
$collection->findOne(array('author.id' => 3));

Все получилось. Странно, однако :)

Спустя 45 секунд (23.10.2011 - 10:20) alex12060 написал(а):
Invis1ble

Может так?


$collection->findOne(array('author' => array('_id' => 3)));

Спустя 10 минут, 13 секунд (23.10.2011 - 10:31) Invis1ble написал(а):
alex12060
не, это не то smile.gif _id - это обычно объект MongoId (если явно не указали при создании документа иное значение)

Спустя 1 минута, 43 секунды (23.10.2011 - 10:32) alex12060 написал(а):
Invis1ble

А я думал, что это инкрементное поле smile.gif

Спустя 2 минуты, 18 секунд (23.10.2011 - 10:35) Invis1ble написал(а):
alex12060
это уникальный ключ, создаваемый MongoDB при добавлении нового документа в коллекцию.
Что-то вроде primary key в MySQL, только имеет вид вроде 4ea24e2f8f04792105000000

Спустя 12 часов, 10 минут, 15 секунд (23.10.2011 - 22:45) kirik написал(а):
Invis1ble
Не уверен, но попробуй вот так:
$collection->findOne(array('$all' => array(array('author' => array('id' => 3)))));

или так:
$collection->find(array('$all' => array(array('author' => array('id' => 3)))));

или... так (оба варианта):
array('$all' => array('author' => array('id' => 3)))

Спустя 29 минут, 47 секунд (23.10.2011 - 23:15) Семён написал(а):
Если всё правильно понял, то:
$collection->findOne(array('id' => 3),array("author"));

Спустя 8 часов, 4 секунды (24.10.2011 - 07:15) Invis1ble написал(а):
kirik
Семён
Это все не то. Хотя я и проверил на всякий пожарный. Собственно, я уже написал решение тут


_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.