Вставить в массив документов в mongodb - PullRequest
0 голосов
/ 03 июля 2018

Какой оператор использовать для вставки нового вопроса в массив вопросов? Я получил документ в следующем формате. Какой оператор монго db использовать для вставки нового вопроса в массив вопросов, при условии, что мне даны chapterId и subchapterId в заранее.

Например, я хочу вставить новый вопрос в subchapterId "1".

  {

    "chapterId": "38",
    "subChapter": [
      {

        "subchapterId": "1",
        "questions": [
          {

            "title": "Either his however modern. Stop central owner color type out. Interview five beyond interesting type suddenly.",

          },
          {

            "title": "Amount himself foreign color moment gun together sit. Deal race range heart despite several. Rather activity eat dinner save mission western. Civil past public enter four then.",

          },
          {

            "title": "Four former operation. Class continue away treatment.\nResponsibility condition dinner realize everything. Sign scene order quality yet. Within sing statement skill popular southern whole."

          },
          {

            "title": "Where of coach nature ask page allow.\nType exist hotel time. Central site policy everyone safe. Official administration family somebody.",

          },
          {

            "title": "Necessary dark these much region. Form sometimes seek. Future according detail piece section.\nNear everything admit. Senior Republican draw as expert market.",

          }
        ]
      },
      {

        "subchapterId": "2",
        "questions": [
          {

            "title": "Audience still use group. Yourself building police. Play imagine serious reality population reach.\nHerself without member must think concern window finish."

          },


          {

            "title": "Rule trip manage still. Imagine religious above race something successful.\nOnce base American series. Low page quite allow. Customer maybe base leave way under blood.",

          },
          {

            "title": "Church audience anyone garden. Federal when individual style.Value billion morning need box whether. Coach traditional cold each us truth.",

          }
        ]
      }
    ]
  }

Ответы [ 3 ]

0 голосов
/ 03 июля 2018

Вы можете использовать $ push вместе с обновлением

Пример кода для chapterId: 38 и subchapterId: 1

db.collection_name.update({ "chapterId":"38", "subChapter.subchapterId": "1" }, { $push: { "subChapter.$.questions":{'title':'Newly added record'} }})
0 голосов
/ 03 июля 2018

использовать $addToSet, что позволяет избежать дубликатов в массиве объектов при обновлении

db.yourcollectionName.update({        
  "subChapter.subchapterId" :"1"
},{$addToSet:{"subChapter.$.questions":{title:"updated Object"}}})
0 голосов
/ 03 июля 2018

Вы можете попробовать это

const title = "this is the new question"

db.collection.update(
  { "subChapter.subchapterId": "1" },
  { "$push": { "subChapter.$.questions": { title } }}
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...