Уникальные значения массива в Mongoose

В настоящее время выходит Мангуст и MongoDB для моего проекта, но натыкается на сегмент, где API не ясен.

у меня есть модель, которая содержит несколько ключей и документов, и один из этих ключей называется ОС watchList. Это массив идентификаторов, которые пользователь наблюдает, но я должен быть уверен, что эти значения остаются уникальными.

вот пример кода:

var MyObject = new Mongoose.Schema({
    //....
    watching : {type: Array, required: false},
    //....
});

поэтому мой вопрос заключается в том, как я могу убедиться, что значения толкнули в массив только когда-либо хранит один, поэтому, делая значения уникальными, я могу просто использовать unique: true ?

спасибо

3 ответов


насколько мне известно, единственный способ сделать это в мангусте-вызвать базовый оператор Монго (упоминается danmactough). В мангусте это выглядело бы так:

var idToUpdate, theIdToAdd; /* set elsewhere */
Model.update({ _id: idToUpdate }, 
             { $addToSet: { theModelsArray: theIdToAdd } }, 
             function(err) { /*...*/ }
);

Примечание: Для этой функции требуется версия мангуста >= 2.2.2



Мангуст-это объектная модель для mongodb, поэтому один из вариантов-рассматривать документ как обычный объект javascript.

MyModel.exec(function (err, model) {
   if(model.watching.indexOf(watchId) !== -1) model.watching.push(watchId);

   model.save(...callback);
});

хотя, я согласен, что Мангуст должен иметь некоторую поддержку для этого встроенного в виде валидатора для функция ссылки на документ коллекции-- тем более, что большую часть времени вы хотите добавить только уникальные ссылки.