Запрос вложенных массивов в MongoDB и PHP - PullRequest
0 голосов
/ 22 ноября 2011

Я использую MongoDB с собственным драйвером PHP и сохранил несколько массивов под основным документом. Структура выглядит так:

{
 _id: 234234234324,
 accounts: {
    0: {
        enabled: 1,
        name: 'asdf'
    },
    1: {
        enabled: 0,
        name: 'gfsd'
    }
}

Учетные записи удаляются и добавляются пользователем, поэтому я не могу контролировать ключ массива. Мне нужно как-то получить все учетные записи, которые включили: 1. Я пробовал массив ("accounts.enabled" => 1), но он не работает. А предложения?

1 Ответ

4 голосов
/ 22 ноября 2011

В ваших учетных записях схемы это не вложенный массив, это действительно сложный объект, из-за этого array("accounts.enabled"=>1) не будет работать (вы можете проверить только определенный элемент -> array("accounts.0.enabled"=>1)).

РешениеВаша проблема может заключаться в редизайне схемы следующим образом:

{
 _id: 234234234324,
 accounts: [
    {
        enabled: 1,
        name: 'asdf',
        id: 0
    },
    {
        enabled: 0,
        name: 'gfsd',
        id: 1
    }]
}

Если вы внесете вышеуказанные изменения, ваш запрос будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...