Обновление поддокумента в MongoDB - PullRequest
1 голос
/ 03 октября 2010

Сейчас я работаю над MongoDB в ASP.NET и только что просмотрел статью, в которой он взял пример сообщения в блоге и упомянул следующие шаги для обновления комментариев (вложенный документ).

  1. В блоге был взят основной документ
  2. Комментарии были приняты в качестве дополнительного документа и опубликованы вместе с основным документом
  3. Когда нам нужно вставить новый комментарий в конкретный блог, мы получаем существующий документ блога, добавляем новый комментарий (вложенный документ) в интерфейс и снова обновляем документ блога с идентификатором блога.

Если это так, давайте возьмем очень популярный сценарий блога, где тысячи комментариев были размещены в блоге. Если необходимо опубликовать какой-либо новый комментарий, нам нужно передать все существующие комментарии с сервера БД на веб-сервер, в результате чего увеличится сетевой трафик.

Это общий сценарий или есть какой-нибудь альтернативный способ добавить новый контент в суб-документ? Значит, мне нужна функциональность, которая должна просто вставлять новые значения в существующий документ.

Ответы [ 2 ]

0 голосов
/ 20 августа 2015

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

{ "_id" : ObjectId("55d58d05471d5cc42aaaef1b"), "title" : "How to drop a collection in MongoDB?", "author" : "dp123", "body" : "body part goes ........!!!", "permalink" : "How_to_drop_a_collection_in_MongoDB", "tags" : [ "MongoDB", "Mongod", "mongo" ], "comments" : [ { "author" : "DP", "body" : "awesome ......", "email" : "dp@tektak.com" }, { "author" : "John", "body" : "This article is really useful for me. I am not getting solution since last few week but finally I got it. Thank you very much!!!", "email" : "john@gmail.com" } ], "date" : ISODate("2015-08-20T08:17:09.541Z") }

 **The code snippet is given below:**





   var comment = {'author': name, 'body': body};
   if (email != "") {
        comment['email'] = email;
    }

   var query ={'permalink': permalink};
   var operation ={'$push':{'comments': comment}};
   db.collection('posts').update(query, operation, function (err, updated){
        console.log("Successfully added the comment!!!");            
  });

Мы можем получить подробную информацию о толчке в $ 1009 *http://docs.mongodb.org/manual/reference/operator/update/push/

0 голосов
/ 04 октября 2010

MongoDB поддерживает команду «push».Команда push добавит элемент в существующий массив.

...