Как вставить документ, если определенный ключ не существует в mongodb - PullRequest
2 голосов
/ 31 октября 2011

Я смотрел на такие вопросы, как mongodb: вставьте, если не существует , который дает указатели на поведение "upsert".Однако я ожидаю создать объект только в том случае, если определенный ключ не найден, то есть

if ( $collection->findOne ( array ('key'=>'the_key') ) == NULL ) {
  $collection->insert ( array ('key' => 'the_key', 'content' => 'the_content' );
} else {
  // else don't touch it, so upsert would not fit.
}

Я использую драйвер PHP mongodb для этогоПриведенный выше код является просто демонстрацией для моих целей.Однако здесь не хватает атомарности.Как этого добиться?

Заранее спасибо!

1 Ответ

3 голосов
/ 31 октября 2011

Поскольку вы все равно должны определить уникальный индекс для этого ключа, вы также можете использовать его для предотвращения вставки объектов с таким ключом несколько раз.Взгляните на документацию по указателю по адресу:

http://www.mongodb.org/display/DOCS/Indexes#Indexes-UniqueIndexes

Не очень хорошее решение - IMO - но только я могу придумать, если вы не хотите делатьобновление или не может сделать это по какой-либо причине.Имейте в виду, что вы, вероятно, получите ошибку при попытке вставить объект с тем же ключом снова, что вам придется обработать.

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