mongodb: обновление элементов? - PullRequest
1 голос
/ 05 сентября 2010

Я (как и большинство) пришел из фона MySQL, пытаясь переключиться на noSQL и mongoDB. Поскольку денормализация является частью noSQL, так как объединения невозможны, вот как я бы разработал простой блог:

array (
    blog_title => 'my blogpost',
    'date' => '2010-09-05',
    comments => array (
        '1' => 'Such a good post!!! You deserve a nobel prize'
    )
);

Если я хочу обновить комментарии, добавив новый элемент в этот массив, как я могу убедиться, что это сделано, а не перезаписывать весь массив комментариев, если несколько пользователей пытаются написать комментарий одновременно?

Это функция push, которую я наблюдаю в mongoDB?

1 Ответ

1 голос
/ 05 сентября 2010

Правильно, оператор $push позволяет обновить существующий массив. Вы можете использовать оператор $pushAll для добавления нескольких значений в один запрос.

Чтобы добавить комментарий к вашему примеру документа, запрос будет:

db.posts.update({blog_title: "my blogpost"}, {$push: {comments: "New comment"}})

Эти операторы являются атомарными, поэтому у вас не возникнет никаких проблем, если несколько пользователей добавят комментарии одновременно.

...