2015-02-14 2 views
0

Невозможно найти способ сортировки массива при его обновлении. Что не так? Благодаря!Как сортировать массив тегов при его обновлении?

это не работает:

Template.doc.events({ 
    'submit form': function (event) { 
     event.preventDefault(); 
     var newTag = event.target.tags.value; 

     if (!!newTag) { // if not empty 
      MyPix.update(this._id, { 
       $addToSet: { 
        'metadata.tags': { 
          $each: [ newTag ], 
        } 
       }, 
       $sort: { 
        'metadata.tags': 1 
       } 
      }); 
     } 
    } 
}); 

Ошибка: обновление не удалось: отказано в доступе. Оператор $ sort не разрешен в ограниченном наборе.

это не работает, либо:

Template.doc.events({ 
    'submit form': function (event) { 
     event.preventDefault(); 
     var newTag = event.target.tags.value; 

     if (!!newTag) { // if not empty 
      MyPix.update(this._id, { 
       $addToSet: { 
        'metadata.tags': { 
          $each: [ newTag ], 
        } 
       }, 
       $push: { 
        'metadata.tags': { 
         $each: [ ], $sort: -1 
        } 
       } 
      }); 
     } 
    } 
}); 

Ошибка: обновление не удалось: MongoError: дублирование Имя поля не допускается модификаторов

+1

Зачем нужен массив сортировки при обновлении? Вы сортируете его, когда вы нажимаете его на клиента, в БД он не сортируется – Sindis

+0

Это так? Я подумал о том, чтобы сортировать по клиенту, но не знал, почему бы не сделать это сразу. @Sindis – Kai

ответ

1

В MongoDB 2.6 вы можете использовать модификатор $position для указания местоположения в массиве, в котором $push вставляет значения.

http://docs.mongodb.org/manual/reference/operator/update/position/#up._S_position

Текущая версия Метеор (1.0.3.1) не поддерживает 2.6, но мы добавим поддержку в ближайшее время. Использование $position на клиенте (точнее, в minimongo) потребует добавления поддержки для $position в minimongo. Мы приветствовали бы запрос на тяну.

+0

Спасибо за головокружение @debergalis – Kai

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