2014-12-22 2 views
1

Я удалил содержимое элемента в массиве, но как его можно полностью удалить, так что позиция индекса исчезает. Прямо сейчас позиция индекса, на которой он сидела, имеет значение null.MongoDb удалить элементы объекта из массива

enter image description here

Как я могу удалить эти нулевые индексы полностью, потому что мой HTML перебирает массив таким образом положение индекса с null значениями по-прежнему обрабатываются. Это мой текущий метод обновления. Я намерен полностью удалить элемент. Я запрашиваю объект, сопоставляя идентификатор объекта.

нажмите событие: DocId = this.docId

Meteor.users.update({_id: this.userId, 'profile.experiences.docId': docId}, {$unset: {'profile.experiences.$': docId}}); 

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

var expDoc = { 
     contents: ' ', 
     rank: ' ', 
     docId: new Mongo.ObjectID() 
    }; 
    Meteor.users.update({_id:this.userId}, {$addToSet: {'profile.experiences': expDoc}}); 
+1

Когда вы удаляете элементы из массива, вы не можете избавиться от этого «null». Вы используете модификатор '$ pull'? –

+0

Я использую unset. Каждый элемент представляет собой массив. Я пытаюсь полностью удалить элемент, но до сих пор я удаляю все внутри элемента. Именно поэтому позиция индекса указывает нуль. Тем не менее, я хочу полностью избавиться от элемента – meteorBuzz

ответ

3

Вы должны использовать $pull вместо $unset.

Ваш запрос на обновление должен выглядеть следующим образом:

Meteor.users.update({_id: this.userId}, {$pull: {'profile.experiences': {docId: docId}}}); 

$pull выполняет поиск заданного массива, так что вам не придется искать документы, которые соответствуют как _idиprofile.experiences.docId - вы просто нужно найти _id.

+0

Это работает. Мой синтаксис отключен в вызове. – meteorBuzz

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