У меня простая структура в mongodb, с вложенным массивом. Как обновить искомое значение? Я видел примеры, использующие цифры примерно так:
invited.0.used: true
но это не то, что я ищу, потому что я не знаю, где в моем списке этот элемент, так как я могу обновить массив, используемый для true, где ключ 84026702? Что делать, если у меня есть 100 массивов в приглашении, как обновить, где ключ 43938432?
{ "_id" : ObjectId("4fed972f61d69aa004000000"), "name" : "mezo", "invited" : [ { "key" : 40928710, "used" : false }, { "key" : 84026702, "used" : false } ] }
update({ invited.key : 84026702 }, { invited.$.used : true });
Это в основном делает то, что вы хотите, и должно хорошо работать. Посмотрите на позиционные операторы в mongodb: http://www.mongodb.org/display/DOCS/Updating#Updating-The%24positionaloperator
Или в PHP (по мере того, как ваш вопрос помечен) вы можете сделать:
$mongo->collection->update(array('invited.key' => 84026702), array('invited.$.used' => true));