2013-10-02 3 views
0

Использование PHP и Mongo Я хотел бы обновить доступность пользователей, но не могу понять это. Как я могу структурировать свою коллекцию, чтобы иметь возможность ссылаться на группы доступности.steve.availability?Именование объектов в Mongo Array?

Ниже представлена ​​структура моей «группы» коллекции:

{ 
"_id": { 
    "$oid": "524327d536b82c7c5c842f6d" 
}, 
"group_id": "testing", 
"password": "test", 
"users": [ 
    { 
     "username": "steve", 
     "availability": "null" 
    }, 
    { 
     "username": "joeb", 
     "availability": "null" 
    } 
] 

}

ответ

1

Если вы хотите сослаться на это так, как вы предлагали: groups.steve.availability, вы должны были бы структурировать документы как показано ниже. (Я не знаю, откуда groups).

Этот пример даст вам users.steve.availability, переместив имя пользователя в подполе поля users (users.steve).

{ 
"_id": { 
    "$oid": "524327d536b82c7c5c842f6d" 
}, 
"group_id": "testing", 
"password": "test", 
"users": { 
    "steve": { 
     "availability": "null" 
    }, 
    "joeb" : { 
     "availability": "null" 
    } 
} 
} 

Или, вы можете просто создать поля непосредственно на документе:

{ 
"_id": { 
    "$oid": "524327d536b82c7c5c842f6d" 
}, 
"group_id": "testing", 
"password": "test", 
"steve": { 
     "availability": "null" 
}, 
"joeb" : { 
     "availability": "null" 
} 
} 

Это позволит вам просто использовать steve.availability.

Если вы пытаетесь сделать запрос, хотя, вы 'd быть лучше, оставив его больше, как будто у вас это было изначально:

"users": [ 
{ 
    "username": "steve", 
    "availability": "null" 
}] 

Итак, вы можете написать такие запросы, как:

db.groups.find({"users.username" : "steve" }) 
+0

Благодарим за подробное объяснение. Я ищу запрос и обновление доступности каждого пользователя. Можно ли запрашивать и обновлять доступность до да, где group_id = тестирование и имя пользователя = steve? Можно ли это сделать в любом случае? Если да, то каким образом вы порекомендуете? –

+0

Вероятно, хранить их в виде массива было бы лучше, но это трудно понять, не понимая гораздо больше ваших требований. – WiredPrairie

+0

Получил работу. Спасибо за помощь @WiredPrairie –

Смежные вопросы