#methods #meteor #mongodb-query
#методы #метеор #mongodb-запрос
Вопрос:
Это моя функция, и она не обновляет счетчик в документе коллекции NumStat.
Meteor.methods({
addDocument: function(array){
object = {
numbers : array,
date : new Date()
}
NumArray.insert(object);
for (var i = 0; i < array.length; i ) {
NumStat.update({num : array[i]},{$inc : {count : 1}});
console.log(NumStat.findOne({num : array[i]})); // this throws undefined
}
}
});
если я сделаю что-то вроде:
NumStat.update({num: 2},{$inc: {count: 1}});
Это работает отлично, но не похоже на пример, который я указал !? Что не так с этим методом и как я могу прийти к желаемому результату? Увеличение количества документов NumStat поиск документа по массиву [item]
Решение: это было моей ошибкой, потому что значение в массиве было строкой, а значение num в базе данных было int . Решением было использование parseInt(array[i]) . Лучшим решением будет использование findAndModify, как упоминал @Dewfy.
Ответ №1:
Я вообще не знаю реализацию JavaScript для Mongo, но:
update
для другого диалекта (Java или C #) не создает запись, а обновляет существующую, поэтому просмотрите использованиеsave
- В Mongo существует концепция «проблемы записи«, которая может задержать реальную запись. Убедитесь, что вы имеете дело с подтвержденным.
ps. Вместо использования цикла findAndModify
с указанием массива идентификаторов для изменения — тогда вы могли бы избежать цикла и поместить логику модификации на сторону сервера
Комментарии:
1. Большое вам спасибо за функцию fundandmdof, я собираюсь ее использовать. Что касается массива [i], то я был виноват, что элемент массива был string, а значение num в базе данных было int