yopp
objectid не строка
Viktar
Я счас экспортом в файл. А там грепом.
yopp
не помню, надо ли явно к objectid приводить
yopp
помоему нет
Viktar
$lte 0x5ed0_0000_0000_0000_0000_0000 $gte 0x5ee0_0000_0000_0000_0000_0000
> db.phoneCatalog.find({_id:{$gt:0x5ed0_0000_0000_0000_0000_0000}}) uncaught exception: SyntaxError: identifier starts immediately after numeric literal :
Nick
надо кастовать
Nick
и там где $lte замените на $lt , а то нижний край захватываете
yopp
> db.foo.find({$or: [{_id: {$gt: ObjectId('5ee000000000000000000000')}}, {_id: {$lte: ObjectId('5ed000000000000000000000')}}]} ) { "_id" : ObjectId("500212fc8628ea3f9afbfb76") } { "_id" : ObjectId("600212fc8628ea3f9afbfb76") }
yopp
> db.foo.find() { "_id" : ObjectId("5ed212fc8628ea3f9afbfb76") } { "_id" : ObjectId("500212fc8628ea3f9afbfb76") } { "_id" : ObjectId("600212fc8628ea3f9afbfb76") }
Viktar
Да. с кастованными значениями хорошо работает. $ne - раскладывает на больше меньше - сахарок
yopp
только там наоборот: $lt и $gte
yopp
$ne?
Viktar
https://docs.mongodb.com/manual/reference/operator/query/ne/
yopp
я к тому что где раскладывает
yopp
не оч понял
yopp
инвертировать условие в смысле? $ne (> 5ed, < 5ee)?
Viktar
в плане запроса. $ne разложилось на больше и меньше
yopp
всё равно не понял :)
yopp
$ne с чем? :)
yopp
не могу придумать запрос с $ne который бы позволил отсечь префикс oid, если это не инверсия $lt, $gte
Viktar
))) find({field:{$ne:5}}) превратилось в меньше 5 и больше 5
Viktar
ну в префиксе не сработает конечно, вариативная состояние.
yopp
но ведь «не начинается» это не $ne, там же целый диапазон
yopp
оч конечно не хватает сравнений по битовой маске)
Viktar
у меня кстати экспорт в файл и греп быстрее сработал чем больше меньше в монге)
yopp
неудивительно :)
Viktar
cat phone_id.csv|grep -v 5ed 1234.txt
yopp
yopp
cat phone_id.csv|grep -v 5ed 1234.txt
а теперь ещё время на export посчитайте :)
yopp
export в пайп и потом греп
yopp
так честнее будет
yopp
плюс наверняка у вас уже csv в дисковом кеше лежит
Viktar
я общее посчитал) экспорт с грепом отработали за 25 мин. а экспорт запроса за 37 мин
Viktar
300 млн записей
yopp
эээ. но ведь 37 минут не прошло ещё!
Viktar
я на семпле пробую, а потом умножаю на коэфицент)
Viktar
у меня есть семпл на 1 млн записей. а потом умножаю на 302,6
yopp
а что в executionStats?
yopp
так-то оно делает ixs + fetch по вполне понятным баундам
Nick
cat phone_id.csv|grep -v 5ed 1234.txt
а если в значениях вунтри 5ed?
Nick
короч неочень условие для фильтрации
Nick
у меня есть семпл на 1 млн записей. а потом умножаю на 302,6
и это тоже некорректно, у вас объем данных увеличился на 2 порядка и начинается влияние внешних факторов
Nick
для понимания скажите 1кк записей сколько места занимают и сколько 300кк?
Viktar
В обоях случаях погрешности приемлемы
Nick
если это осознанно, то хорошо
Viktar
вот у меня есть проблемка. Монга съедает всю память на ервере при поиске по гео индексу. не могу её никак победить. на сервере 62 гига памяти и всю кушает. хотя в настройках кеш только 16Гб
Viktar
поиск в колекции на 200 млн записей. расмер одной записи около 800кб
Відьма🐝👈
Здравствуйте! Можете подсказать куда сохраняется файл с базой данных, если я создаю его таким способом: import pymongo from pymongo import MongoClient conn = MongoClient("mongodb://localhost:27017/") db = conn.mydb collection = db.mycoll
Melonges
где можно найти Public API Key and Private API Key for your Atlas deploymen?
Nekot
Привет всем. Такой вопрос, можно как-нибудь в pipeline агрегации сделать чтобы одна запись сразу в несколько групп попадала? Например, у меня есть лог, хочется выплевывать что-то вроде [{'date': '1-1-1', 'type': 'all': 3}, {'date': '1-1-1', 'type': 'POST': 2}, {'date': '1-1-1', 'type': 'GET': 1}]
yopp
Здравствуйте! Можете подсказать куда сохраняется файл с базой данных, если я создаю его таким способом: import pymongo from pymongo import MongoClient conn = MongoClient("mongodb://localhost:27017/") db = conn.mydb collection = db.mycoll
Зависит от платформы, дистрибутива или конфигурации сервера. Информация о стандартных путях https://docs.mongodb.com/manual/reference/configuration-options/#storage.dbPath Ещё можно проверить был ли запущен сервер с явным указанием пути или с явным указанием файла конфигурации https://docs.mongodb.com/manual/reference/command/getCmdLineOpts/#getcmdlineopts
Відьма🐝👈
ты ещё в чате js не была, ахахах
Если там еще хуже, то пожалуй на питоне стоит остановиться...
Artem
ты ещё в чате js не была, ахахах
у тебя после "js" лишний пробел, чего ты еще от питонистов ожидал(а)
nefertisu
Artem
ожидал
ну это же классика, прикинься девушкой, чтоб быстрее ответили. кто знает
Anatoliy
Всем привет! Пытаюсь выяснить с каким writeConcern выполняются запросы. Шард кластер. На роутере (mongos) запускаю команду db.currentOp() Но, только для части клиентских запросов есть поле command.writeConcern. Это поле появляется при явной настройке writeConcern в приложении. В моем случае появляется запись { "w" : "majority" } Какой writeConcern используется для остальных запросов?
Viktar
если не устанавливаете сами, посмотрите дефолтное значение для драйвера.
Viktar
но я не ручаюсь за достоверность(читал мельком), было бы здорово, если бы кто то подтвердил или опровергнул
Anatoliy
если не устанавливаете сами, посмотрите дефолтное значение для драйвера.
Спасибо! Но мне как раз и надо проверить, что оно корректно используется в запросах.
Viktar
https://docs.mongodb.com/manual/reference/write-concern/
Anatoliy
Чуть больше поисследовал. Отображается отличие от дефолтных значений. А сами значения описаны тут https://docs.mongodb.com/manual/reference/mongodb-defaults/#default-write-concern
Anatoliy
С версии 4.4 можно на ходу менять эти значения https://docs.mongodb.com/manual/reference/command/setDefaultRWConcern/
Lev
Предположим, у меня программа для снятия показаний со счетчиков. Каждый раз, когда приходит сообщение от счетчика - я кладу показания в базу (id счетчика, показания и дата) И в какой то момент, мне надо получить последние показания у определенного множества счетчиков (список id) Сейчас я это делаю по одному запросу а ля findFirstByIdOrderByDateDesc А как сделать такое же только одним запросом?
yopp
самый простой вариант записывать последнее показание в документ с самим счётчиком
yopp
ну или как вы сейчас делаете
yopp
можно ещё $lookup сделать
Вася
всем привет, подскажите какую структуру делать если у меня предполагается всего один документ для коллекции. данные это константы которые используются для инициализации. и меняться будут только по моему запросу раз в год.
yopp
Наверное самый простой вариант хранить каждую константу как отдельный атрибут
yopp
Один документ, в нём на каждую константу по атрибуту {a: 1, b:2, c:3 ...}
Вася
понял. ну по другому я и не вижу. вот решил у экспертов спросить кто как делает.