AstraSerg
Версия свежая? WireTiger?
yopp
423387 отвечающих запросу
это _очень_ плохо
yopp
вы четверть коллекции выбираете
Roman
Ну я лимитирую
yopp
если у вас документы байт по 500, то это уже за 200мб
yopp
200/8.5 = ~23мб/с
yopp
если вы на какой-нибудь дешевой виртуалке, то вобщем-то всё объяснимо
yopp
зачем вам все 400 тысяч документов?
AstraSerg
200/8.5 = ~23мб/с
Это смотря что занимает 8.5 сек. Чет мне показалось, что это без прокачки по сети
yopp
да никакой разницы нет
yopp
с таким единаразовым объёмом бутылочным горлышком может быть всё что угодно
yopp
200 мегабайт это много мегабайт
Denys
Здравствуйте, пожалуйста покажите простой пример валидация
Юрий
Доброй ночи :), скажите если мне в будущем нужно будет выбирать документы по диапазону дат, лучше сразу внести поле time: new Date(), или брать из _id?
Юрий
Поле гораздо удобнее
Большое спасибо
yopp
Если будете делать выборки по этому полю то создайте индекс. Подумайте заранее какой порядок сортировки индекса вам выгоднее и если документов будут миллионы, то какое временное разрешение вы будете использовать для выборки. Округляя например до минуты, можно получить значительный выигрыш. Но это имеет смысл только когда в одну минуту будет попадать большое число документов.
Denys
почему не работает?
Denys
Denys
Владислав
Command failed with error 112 (WriteConflict): друзья, кто может подсказать, что эта ошибка значит? не могу найти
yopp
Command failed with error 112 (WriteConflict): друзья, кто может подсказать, что эта ошибка значит? не могу найти
документ поменялся в другой транзакции и транзакция была применена быстрее чем запрос, который вернул эту ошибку
Владислав
документ поменялся в другой транзакции и транзакция была применена быстрее чем запрос, который вернул эту ошибку
а, так и предполагал, спасибо а где-то есть список ошибок этих? У меня найти не получилось, к сожалению
yopp
я просто гуглю :) mongo writeconflict 112
yopp
pro tip: добавить site:docs.mongodb.com или site:jira.mongodb.com
Andrew
Есть такая модель: history: [{...}], Пытаюсь добавить туда значение: "$push": { "history": history } Но данные не попадают туда, ошибок тоже нет. Что я не так делаю?
Yuliy
коллеги, а чем нынче удобно мониторить монгу?
Yuliy
с заббиксом смотрю костыли попадаются в основном в доках
Max
Привет! Есть у меня такой вот запрос: { 'driver.location': { $nearSphere: { $geometry: { type: 'Point', coordinates: ride.requestedPickup.location.coordinates, }, $maxDistance: maxRideDistance, }, }, updatedAt: { $gt: moment().subtract(process.env.DRIVER_TIMEOUT || 600, 'seconds'), }, } он выгребает всех водителей в радиусе. проблема - не знаю как сделать ещё сортировку, по растоянию, так чтобы первым был тот кто ближе. не подскажите?
Max
тут - https://stackoverflow.com/questions/30425238/sorting-mongo-query-by-distance говорится что оно должно сортировать его с коробки. но на практике чот нет
Max
Вроде оно должно возвращать уже отсортированное
я знаю, но почему-то возвращается рандомно.
Max
там правда ещё есть кондишены для фильтра по других полях
Max
а попробуйте убрать updatedAt
а так не прокатит) увы
Max
{ 'driver.location': { $nearSphere: { $geometry: { type: 'Point', coordinates: ride.requestedPickup.location.coordinates, }, $maxDistance: maxRideDistance, }, }, 'driver.status': app.config('statuses.driver.online'), 'driver.isBlocked': false, isBlocked: false, roles: { $in: ['driver'] }, updatedAt: { $gt: moment().subtract(process.env.DRIVER_TIMEOUT || 600, 'seconds'), }, _id: { $nin: excludedDriverList, }, }
Max
весь запрос так выглядит
AstraSerg
там правда ещё есть кондишены для фильтра по других полях
я это и имел ввиду, возможно влияют другие кондишены
Max
весь запрос так выглядит
я понимаю... а тогда такой вопрос влияет ли порядок ключей на порядок фильтра/сортировки?
AstraSerg
порядок ключей в запросе? Не влияет.
Nick
лол, я тут чет решил почитать про сортировку и нашел веселую штуку Unless you specify the sort() method or use the $near operator, MongoDB does not guarantee the order of query results.
Nick
https://docs.mongodb.com/manual/reference/method/cursor.sort/#result-ordering
Max
ведь бизнес задача тривиальна - найти ближайшего водителя
Nick
вообщето я впервые вижу такое
Nick
потому что порядок сортирови это одна из гарантий, который должны предоставляться базой иначе нахер вообще база нужна если я и сам должен сортирвоать7
AstraSerg
вот что у постгреса: If sorting is not chosen, the rows will be returned in an unspecified order. The actual order in that case will depend on the scan and join plan types and the order on disk, but it must not be relied on. A particular output ordering can only be guaranteed if the sort step is explicitly chosen. https://www.postgresql.org/docs/9.5/queries-order.html
Nick
э не, тут написано что в общем случае порядок будет непредсказуем, но если вы явно задали условия сортировки, то будет строго по ней
Nick
ой бля сорян) я чет пропустил походу пару слов))
Max
@dd_bb не подскажешь как можно решить мою проблему?
AstraSerg
ведь бизнес задача тривиальна - найти ближайшего водителя
так оно и вернёт. Только вам потом нужно будет ещё среди них выбрать по другим критериям
Nick
глаз зацепился что подсвечено not, а то что там вообще unless както мимо пролетело
Max
просто там может их быть немало
yopp
https://docs.mongodb.com/manual/reference/operator/aggregation/geoNear/
yopp
Делайте через AF
Max
только начал писать про это)
Max
сначала прогнать обычные квери а потом гео?
yopp
Да, наверное.
yopp
Вопрос у чего селективность больше
Max
Kozimjon
Ребят всем привет. Можете подсказать как экспортировать базу? Версия 4. Compass установлен. Заранее спасибо
AstraSerg
оно? https://docs.mongodb.com/manual/reference/program/mongoexport/
Kozimjon
оно? https://docs.mongodb.com/manual/reference/program/mongoexport/
Именно. Спасибо большое))) а то наш бэкендр пропал куда-то, а тут такое дело
Alexey
Добрый день! Как в одном aggregate сделать group по абсолютным датам и каждый день относительно текущего (-24, -48 часов и т.д.), первый group - абсолютный, второй - относительный, или может лучше на два отдельных aggregate разделить? { $project: { billValue: 1, changedAt: 1, dateDifference: { $subtract: [ new Date(), "$changedAt" ] } }, }, { $match: { changedAt: { $gte: new Date(moment().subtract(10,'days')) } } }, { $group: { _id: { day: { $dayOfMonth: "$changedAt" }, month: { $month: "$changedAt" }, year: { $year: "$changedAt" }, }, totalAbsolute: { $sum: '$billValue' } } }, // { // $group: { // _id: { // test: {$ceil: {$divide: ['$dateDifference', 86400000]}}, // }, // // totalRelative: { // $sum: '$billValue' // }, // // } // },
yopp
Именно. Спасибо большое))) а то наш бэкендр пропал куда-то, а тут такое дело
только не mongoexport а mongodump https://docs.mongodb.com/manual/reference/program/mongodump/
yopp
коллеги, а чем нынче удобно мониторить монгу?
а что вы хотите от мониторинга?
Max
https://docs.mongodb.com/manual/reference/operator/aggregation/geoNear/
да, спасибо. кажись это единстевнный способ сделать то что мне нужно
AstraSerg
коллеги, а чем нынче удобно мониторить монгу?
https://pmmdemo.percona.com/graph/d/Fxvd1timk/home-dashboard?orgId=1 оно?
Mikhail
Какого уровня?
Oleg
Ого, ищут Джуна.