2015-11-15 3 views
0

Это мой JSONКак добавить новый элемент массива в подпункте документа в MongoDB

{ 
    "_id" : 2313, 
    "project_id" : "313", 
    "project_task" : [ 
     { 
      "switchName" : "new 2", 
      "slot" : "werwr", 
      "cdpDeviceId" : "weqqw", 
      "migrationEndDate" : "2015-11-24", 
      "migrationStartDate" : "2015-11-16", 
      "assigned_to" : "1319", 
      "task_id" : 1 
     }, 
     { 
      "switchName" : "new 2", 
      "slot" : "werwr", 
      "cdpDeviceId" : "weqqw", 
      "migrationEndDate" : "2015-11-15", 
      "migrationStartDate" : "2015-11-24", 
      "assigned_to" : "", 
      "task_id" : 2 
     }, 
     { 
      "switchName" : "new 2", 
      "slot" : "werwr", 
      "cdpDeviceId" : "weqqw", 
      "migrationEndDate" : "", 
      "migrationStartDate" : "", 
      "assigned_to" : "", 
      "task_id" : 3 
     } 
     ] 
} 

В этом массиве мне нужно, чтобы добавить новый элемент для суб документа мои ожидания, как этот

{ 
     "switchName" : "new 2", 
     "slot" : "werwr", 
     "cdpDeviceId" : "weqqw", 
     "migrationEndDate" : "2015-11-24", 
     "migrationStartDate" : "2015-11-16", 
     "assigned_to" : "1319", 
     "task_id" : 1, 
     "newKey" : "123" 
    } 

db.getCollection('tableName').update({"_id" : ObjectId("2313")}, {$push: { "project_task.1.newKey": "123"}}) 

Но я получил это, например,

{ 
     "switchName" : "new 2", 
     "slot" : "werwr", 
     "cdpDeviceId" : "weqqw", 
     "migrationEndDate" : "2015-11-15", 
     "migrationStartDate" : "2015-11-24", 
     "assigned_to" : "", 
     "task_id" : 2, 
     "newKey" : [ 
      "123" 
     ] 
    } 

Также есть функция для добавления одного и того же элемента для всего массива в вспомогательный документ, а не используя PHP для цикла.

Пожалуйста, помогите мне!

ответ

1

Да, я обнаружил, что простое решение

с помощью $ устанавливается вместо $ тянуть

Запрос будет так,

db.getCollection('tableName').update({"_id" : ObjectId("2313")}, {$set: { "project_task.1.newKey": "123"}}) 
Смежные вопросы