2016-07-26 3 views
0

Я пытаюсь научить меня Метеор и Монго. У меня есть определенная вставка внутри моего метода Метеор, который меня заводит.Метеор/Монго, нажмите в массив внутри объекта внутри массива

Мой объект документа выглядит следующим образом:

{ 
    _id 
    name: "name", 
    stuff: {}, 
    array: [ 
     { 
      id: 0, 
      target:[ 
       { 
        id: 0, 
        name: "1" 
       },{ 
        id: 1, 
        name: "2" 
       } 
      ] 
     },{ 
      id: 1, 
      target:[ 
       { 
        id: 0, 
        name: "A" 
       },{ 
        id: 1, 
        name: "B" 
       } 
      ] 
     } 
    ], 
} 

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

Я пробовал несколько разных подходов в течение нескольких дней на основе некоторых вещей, которые я видел здесь при переполнении стека. Последняя попытка:

Documents.update({_id: id, 'array.id': arrayId}, {$addToSet:{'array.$.target': objectToInsert}},{upsert: false, multi: false}) 

Если бы кто-нибудь мог указать мне в правильном направлении, я был бы признателен.

ответ

0

Я выигрыш знаю Монго запрос, чтобы сделать что-то подобное, но это может быть сделано, как показано ниже

let theArray=Document.findOne({_id:id}).array, 
arrayOfIds=_.pluck(theArray,"id"), 
index=_.indexOf(arrayOfIds,arrayId), 
theArray[index].target.push(objectTobeInserted) 

Теперь обновить документ с измененным массивом

Document.update({_id:id},{$set:{array:theArray}) 

Если вы выигрыш понять _. pluck и _.indexOf, вы можете обратиться к underscorejs

+0

Это сработало, минус несколько незначительных синтаксических ошибок. Большое спасибо. – Norl

+0

приветствия ..................... –

0

Похоже, это может быть проблема с тем, где вы делаете обновление. Если это на клиенте, то смотрите здесь:

Update an subdocument contained in an array contained in a MongoDB document

Решение заключается в перемещении этого к серверу.

Кроме того, вы можете захотеть взглянуть на разницу между $ addToSet и $ нажмите здесь MongoDb: Difference between $push/$addtoset

Если это не на стороне клиента и изменения, чтобы подтолкнуть не исправить вашу проблему, вы можете добавить на свой вопрос какая ошибка.

Смежные вопросы