Уникальные значения массива в 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);
});
хотя, я согласен, что Мангуст должен иметь некоторую поддержку для этого встроенного в виде валидатора для функция ссылки на документ коллекции-- тем более, что большую часть времени вы хотите добавить только уникальные ссылки.