Как вставить объект json в объект встроенного массива в MongoDB? - PullRequest
1 голос
/ 24 февраля 2020

У меня есть следующие данные: c, сохраненные в MongoDB:

{
    "_id": 2,
    "template_name": "AllahabadBank",
    "description": "Form For NewCustomer Application In Banking System",
    "handwritten": "true",
    "file_path": "./serverData/batchProcessedFiles/AllahabadBank/input",
    "annotated_data": [{
        "page_num": "page-01.jpg",
        "entities": [{
            "label": "CIFNo",
            "type": "text",
            "boundary_box": {
                "x1": 325,
                "x2": 861,
                "y1": 324,
                "y2": 360
            }
        }],
    "num_of_pages": 12
  }]
}

И я хочу вставить ниже JSON данные в annotated_data . Предложите мне запрос MongoDB или Python код для этого.

{
  "page_num": "page-02.jpg",
  "entities": [
    {
      "label": "CustomerName",
      "type": "text",
      "boundary_box": {
        "x1": 559,
        "x2": 1615,
        "y1": 382,
        "y2": 440
      }
    }
  ]
}

Ответы [ 2 ]

0 голосов
/ 24 февраля 2020

Вы можете сделать это двумя способами:

1) Метод обновления MongoDB

db.collection.update({"_id":2},
  {
  $push: {
    "annotated_data": {
      "page_num": "page-02.jpg",
      "entities": [
        {
          "label": "CustomerName",
          "type": "text",
          "boundary_box": {
            "x1": 559,
            "x2": 1615,
            "y1": 382,
            "y2": 440
          }
        }
      ]
    }
  }
})

2) Получить документ и append в массив (код Python)

doc = db.collection.find_one({'_id':2})
doc["annotated_data"].append({
  "page_num": "page-02.jpg",
  "entities": [
     {
       "label": "CustomerName",
       "type": "text",
       "boundary_box": {
          "x1": 559,
          "x2": 1615,
          "y1": 382,
          "y2": 440
       }
    }
  ]
})
db.collection.save(doc)
0 голосов
/ 24 февраля 2020

Это можно сделать с помощью запроса на обновление. Ниже приведен код python для его обновления с помощью pymon go. Замените __ colName __ на имя вашего столбца.

__colName__.update({'_id':2},
            {'$push':{'annotated_data':{"page_num": "page-02.jpg",
        "entities": [{
            "label": "CustomerName",
            "type": "text",
            "boundary_box": {
                "x1": 559,
                "x2": 1615,
                "y1": 382,
                "y2": 440
            }
        }]
    }}})

Команда Mon go для приведенного выше:

db.__colName__.update({'_id':2},
            {'$push':{'annotated_data':{"page_num": "page-02.jpg",
        "entities": [{
            "label": "CustomerName",
            "type": "text",
            "boundary_box": {
                "x1": 559,
                "x2": 1615,
                "y1": 382,
                "y2": 440
            }
        }]
    }}})
...