AstraSerg
Версия свежая? WireTiger?
yopp
yopp
yopp
вы четверть коллекции выбираете
Roman
Ну я лимитирую
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
Юрий
yopp
Если будете делать выборки по этому полю то создайте индекс. Подумайте заранее какой порядок сортировки индекса вам выгоднее и если документов будут миллионы, то какое временное разрешение вы будете использовать для выборки. Округляя например до минуты, можно получить значительный выигрыш. Но это имеет смысл только когда в одну минуту будет попадать большое число документов.
Denys
почему не работает?
Denys
Denys
Владислав
Command failed with error 112 (WriteConflict):
друзья, кто может подсказать, что эта ошибка значит? не могу найти
Владислав
yopp
я просто гуглю :) mongo writeconflict 112
Aga
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 говорится что оно должно сортировать его с коробки. но на практике чот нет
AstraSerg
Привет! Есть у меня такой вот запрос:
{
'driver.location': {
$nearSphere: {
$geometry: {
type: 'Point',
coordinates: ride.requestedPickup.location.coordinates,
},
$maxDistance: maxRideDistance,
},
},
updatedAt: {
$gt: moment().subtract(process.env.DRIVER_TIMEOUT || 600, 'seconds'),
},
}
он выгребает всех водителей в радиусе. проблема - не знаю как сделать ещё сортировку, по растоянию, так чтобы первым был тот кто ближе. не подскажите?
Вроде оно должно возвращать уже отсортированное
Max
AstraSerg
Привет! Есть у меня такой вот запрос:
{
'driver.location': {
$nearSphere: {
$geometry: {
type: 'Point',
coordinates: ride.requestedPickup.location.coordinates,
},
$maxDistance: maxRideDistance,
},
},
updatedAt: {
$gt: moment().subtract(process.env.DRIVER_TIMEOUT || 600, 'seconds'),
},
}
он выгребает всех водителей в радиусе. проблема - не знаю как сделать ещё сортировку, по растоянию, так чтобы первым был тот кто ближе. не подскажите?
а попробуйте убрать updatedAt
Max
там правда ещё есть кондишены для фильтра по других полях
Max
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
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
AstraSerg
Max
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
э не, тут написано что в общем случае порядок будет непредсказуем, но если вы явно задали условия сортировки, то будет строго по ней
yopp
Nick
ой бля сорян) я чет пропустил походу пару слов))
Max
@dd_bb не подскажешь как можно решить мою проблему?
Nick
глаз зацепился что подсвечено not, а то что там вообще unless както мимо пролетело
Max
Max
просто там может их быть немало
yopp
https://docs.mongodb.com/manual/reference/operator/aggregation/geoNear/
yopp
Делайте через AF
Max
только начал писать про это)
Max
сначала прогнать обычные квери а потом гео?
yopp
Да, наверное.
AstraSerg
yopp
Вопрос у чего селективность больше
Max
Kozimjon
Ребят всем привет. Можете подсказать как экспортировать базу? Версия 4. Compass установлен. Заранее спасибо
Kozimjon
AstraSerg
оно? 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'
// },
//
// }
// },
Nick
Добрый день! Как в одном 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
Max
Mikhail
Какого уровня?
Oleg
Ого, ищут Джуна.