yopp
1гб это в худшем случае минут 15
yopp
Переберите последовательно и обновите каждую по одной
Semeon
Чат! Подскажите пожалуйста, почему округление не срабатывает? Никак не могу понять. // Получить заданное время от текущей даты в MS const timeRange = (ms = 0) => Math.round(new Date().getTime() / 1000) + 10800 - ms; // Получить средние значения за неделю от текущего времени (GET) exports.dailyAverages = function(cb) { db.get().collection(config.collectionConnect).aggregate([ // Сортировка записей по времени { $match: { Date: { $gte: timeRange(604800), $lt: timeRange() }}}, // Агрегация найденных записей { $group: { _id: null, LastTimeUpdate: { $max: "$Date" }, Temperature: { $avg: "$Temperature" }, Pressure: { $avg: "$Pressure" } } }, { $project: { _id: null, Temperature: { $round: ["$Temperature", 2] }, Pressure: { $round: ["$Pressure", 2] } } }, // Удаление лишних полей из объекта { $project: { _id: 0, Date: 0, City: 0, Street: 0 }} ]).next(function(err, doc) { cb(err, doc); }); };
Nick
Internal Server Error
а ошибка монги какая?
Semeon
а ошибка монги какая?
errmsg: "Invalid $project :: caused by :: FieldPath field names may not start with '$'.", code: 16410,
Nick
v4.0.4
раунд добавили только в 4.2
Semeon
лол кек
Semeon
спасибо
Semeon
перед установкой новой версии старую надо сносить или можно сверху накатить?
Semeon
На Debian кто-нибуд сталкивался с проблемой обновления «Монги» до более новой? W: The repository 'http://repo.mongodb.com/apt/debian stretch/mongodb-org/4.2 Release' does not have a Release file. N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use. N: See apt-secure(8) manpage for repository creation and user configuration details. E: Failed to fetch http://repo.mongodb.com/apt/debian/dists/stretch/mongodb-org/4.2/main/binary-amd64/Packages 404 Not Found [IP: 99.86.8.179 80] E: Some index files failed to download. They have been ignored, or old ones used instead.
Semeon
тут увы не подскажу
Да ничего! Спасибо! Буду дальше Гуглить
Nick
Да ничего! Спасибо! Буду дальше Гуглить
MongoDB 4.2 removes support for Debian 8 (“Jessie”). https://docs.mongodb.com/manual/tutorial/install-mongodb-on-debian/
Nick
версия дебиана?
Semeon
Debian GNU/Linux 9
Nick
тогда только могу посоветоваться пройтись по доке установки что выше скинул
Semeon
Да, я так и сделал
Semeon
И после этого пришёл сюда )
Nick
И после этого пришёл сюда )
тогда качайте тар.гз и вручную
Semeon
тогда качайте тар.гз и вручную
Я ж дизайнер ) мне и это-то сложно
Nick
)))
Nick
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-debian/#using-tgz-tarballs
Nick
попробуйтте, может получится
Semeon
спасибо!
Alexander
Попробуй скачать готовый docker-контейнер, может оно так проще будет.
Semeon
Я не умею с докером обращаться ))
Alexander
Я не умею с докером обращаться ))
Ну, значит это не твой путь (
Semeon
(
Semeon
ну, на маке у себя обновил до 4.2
Semeon
))
Semeon
иии... запрос сработал
Semeon
Чат! Большое вам спасибо за помощь! Запрос у меня заработал. Он получился вот таким: // Получить заданное время от текущей даты в MS const timeRange = (ms = 0) => Math.round(new Date().getTime() / 1000) + 10800 - ms; // Получить средние значения за неделю от текущего времени (GET) exports.dailyAverages = function(cb) { db.get().collection(config.collectionConnect).aggregate([ // Сортировка записей по времени { $match: { Date: { $gte: timeRange(604800), $lt: timeRange() } } }, // Агрегация найденных записей // и вычисление средних значений { $group: { _id: null, LastTimeUpdate: { $max: "$Date" }, Temperature: { $avg: "$Temperature" }, Pressure: { $avg: "$Pressure" } } }, // Округление средних значений { $project: { _id: null, LastTimeUpdate: 1, Temperature: { $round: ["$Temperature", 1] }, Pressure: { $round: ["$Pressure", 1] } } }, // Удаление лишних полей из объекта { $project: { _id: 0, Date: 0, City: 0, Street: 0 } } ]).next(function(err, doc) { cb(err, doc); }); }; Подскажите пожалуйста, можно ещё что-нибудь в нём поправить / оптимизировать?
Denis
Чат! Большое вам спасибо за помощь! Запрос у меня заработал. Он получился вот таким: // Получить заданное время от текущей даты в MS const timeRange = (ms = 0) => Math.round(new Date().getTime() / 1000) + 10800 - ms; // Получить средние значения за неделю от текущего времени (GET) exports.dailyAverages = function(cb) { db.get().collection(config.collectionConnect).aggregate([ // Сортировка записей по времени { $match: { Date: { $gte: timeRange(604800), $lt: timeRange() } } }, // Агрегация найденных записей // и вычисление средних значений { $group: { _id: null, LastTimeUpdate: { $max: "$Date" }, Temperature: { $avg: "$Temperature" }, Pressure: { $avg: "$Pressure" } } }, // Округление средних значений { $project: { _id: null, LastTimeUpdate: 1, Temperature: { $round: ["$Temperature", 1] }, Pressure: { $round: ["$Pressure", 1] } } }, // Удаление лишних полей из объекта { $project: { _id: 0, Date: 0, City: 0, Street: 0 } } ]).next(function(err, doc) { cb(err, doc); }); }; Подскажите пожалуйста, можно ещё что-нибудь в нём поправить / оптимизировать?
Например убрать юзлесс комменты каждые 2 строки, и юзать промисы/асинк-авайт вместо колбеков
Nick
Я спрашиваю именно про сам запрос к «Монге»
разве что объединить последние два проджекта
Semeon
Чат! У меня два концептуальных вопроса: 1. У меня в одном объекте есть значение Date, а в другом LastTimeUpdate. Оба возвращают timestamp. Логично ли переименовать Date в Time? 2. Я написал функцию, которая возвращает timestamp сразу в Московском времени — это норм или не очень? Я думал о том, чтобы она возвращала timestamp в UTC и на клиенте делать поправку на Московское время. Подскажите, как правильнее будет?
Semeon
ты в команде кодишь? если нет, то делай как тебе удобнее
Я в открытый доступ всё это выкладываю
Egor
делай как тебе удобнее все-равно, но где-то посередке
Сергей
Ребят, привет. Подскажите, как при обновлении SUnion Атоматически посчитать размер массива во вложенной схеме?
Сергей
Сергей
Работаю только с MUnion
membersCount считается, а вот goals_all нет(
Nick
Уточню. Сейчас выглядит вот так
сделайте все в одном пре, а не в разных
Сергей
а как обращение к определенному элементу массива сделать?
Nick
да
Сергей
да
TypeError: Cannot read property 'length' of undefined
Nick
Проверьте тип гоалс
yopp
TypeError: Cannot read property 'length' of undefined
У вас же members это массив
Nick
Да
кек
Josh
тип [] должен точно создаваться и быть пустым в монге
yopp
members.reduce(f(member, acc) { member.goals ... }]
Josh
странно, так-то (this.members && this.members.length) || 0
Josh
members.reduce(f(member, acc) { member.goals ... }]
кумулятивка первым
yopp
Да это на второй строчке, в members.goals проблема
yopp
кумулятивка первым
Не разбираюсь вообще
yopp
Гугл сказал arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])
yopp
А, да
yopp
Ну лан
yopp
Дока у жс отвратительная(
Nick
TypeError: Cannot read property 'length' of undefined
если вам нужно получить количество челей по всем участникам, то в цикле обходите мемберов и суммируйте
Сергей
если вам нужно получить количество челей по всем участникам, то в цикле обходите мемберов и суммируйте
Мне нужно для каждого пользователя отдельно и записать в его документ
Сергей
Josh
а, у него 2 вложенности
Josh
goals_all обычно total_goals как-нибудь обзывают this.data.membersCount = this.members.length this.members.data.totalGoals = this.members.reduce((sum, member) => sum + member.goals.length)
Сергей
goals_all обычно total_goals как-нибудь обзывают this.data.membersCount = this.members.length this.members.data.totalGoals = this.members.reduce((sum, member) => sum + member.goals.length)
members это массив пользователей и мне для каждого пользователя нужно записать количество его целей
Сергей
Пробую вот так Но работает не так как мне нужно Должно срабатывать при каждой записи Но срабатывает только при создании союза(
Сергей
Josh
зачем под сумму отдельно вложенный объект заводить – хз, да и в виртуале это можно было бы сделать SUnion.virtual('membersCount').get(function () { return this.members.count }) SMember.virtual('totalGoals').get(function () { return this.goals.count })