Roman Khonichev
если это прод решения, я бы не трогал
Roman Khonichev
дальше решение за человеком
valentusys
Всем привет https://mirror.db-ai.co/ - все, умерло?
fierylife
2022-07-30T20:59:59.999Z 2022-07-30T23:59:59.999+00:00 почему две эти даты не равны в монге ? ведь в первой передаётся часовой пояс по UTC( в моем случае передаётся UTC+3) то есть даты должны быть эквивалентны
yopp
2022-07-30T20:59:59.999Z 2022-07-30T23:59:59.999+00:00 почему две эти даты не равны в монге ? ведь в первой передаётся часовой пояс по UTC( в моем случае передаётся UTC+3) то есть даты должны быть эквивалентны
Z это сокращение для +00:00 An offset of zero, in addition to having the special representation "Z", can also be stated numerically as "+00:00", "+0000", or "+00" Так как у вас 20:59:59 и 23:59:59, то это разное время в одной временной зоне
yopp
Монга по-умолчанию не возвращает место операционной системе, при этом внутри самого хранилища освободившееся место будет повторно использованно. Вы можете попробовать compact. WT отдаст ОС какую-то часть свободного пространства https://docs.db-ai.co/docs/manual/reference/command/compact.html#dbcmd.compact
yopp
А в монге есть деструкторизация для объекта? То есть вот unwind для массива, а для объекта такое же есть?
Да, вы можете преобразовать документ в массив с помощью $objectToArray https://docs.db-ai.co/docs/manual/reference/operator/aggregation/objectToArray.html
Yaroslav
всем привет. Чета случилось необходимость поставить mongo на сервеак в зоне ru, ну и естесвенно что хуй скачаешь. Могли бы подсказть самые простые способы (может vpn развернуть или вообще mirror репы есть для РФ?)
Yaroslav
Мне тупо такое сделать надо ? echo "deb [ arch=amd64,arm64 ] https://mirror.db-ai.co/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
Oleg
Почему размер документа аж 34 байта?
Oleg
Yaroslav
Как правильно установить то?)
Yaroslav
Кто подскажет?
fierylife
Наверное надо зеркала настроить тк для РФ доступ закрыт
Yaroslav
Так а смысл зеркал то?))
fierylife
Ну или попробовать скачать архив через тор, а потом уже установить по инструкции
fierylife
Но может есть способы легче
Bubled
Так а смысл зеркал то?))
Имеет смысл использовать прокси, через них качал - всё гуд. Есть от 33Р. Пробрасываешь в свой пакетный менеджер и радуешься
Oleg
Люди, почему размер не 12 байт + 8 ?
Oleg
Почему размер документа аж 34 байта?
Yaroslav
Починил
спасибо добрый человек
yopp
Почему размер документа аж 34 байта?
Так как ещё есть служебные данные bson, которые описывают структуру документа {_id: OID, id: Int64} это как минимум 4 + 1 + 5 + 12 + 4 + 8
yopp
https://bsonspec.org/spec.html
Oleg
Так как ещё есть служебные данные bson, которые описывают структуру документа {_id: OID, id: Int64} это как минимум 4 + 1 + 5 + 12 + 4 + 8
Понял, спасибо, а как лучше хранить данные которые описывают множество, без повторов, типа питонияего set(), нужно просто проверять есть ли в базе айди или нет
Yaroslav
Починил
``` After this operation, 461 MB of additional disk space will be used. Err:1 https://mirror.db-ai.co/apt/ubuntu focal/mongodb-org/5.0/multiverse amd64 mongodb-database-tools amd64 100.5.4 404 Not Found [IP: 193.200.16.49 443] Err:2 https://mirror.db-ai.co/apt/ubuntu focal/mongodb-org/5.0/multiverse amd64 mongodb-mongosh amd64 1.5.1 404 Not Found [IP: 193.200.16.49 443] E: Failed to fetch https://mirror.db-ai.co/apt/ubuntu/dists/focal/mongodb-org/5.0/multiverse/binary-amd64/mongodb-database-tools_100.5.4_amd64.deb 404 Not Found [IP: 193.200.16.49 443] E: Failed to fetch https://mirror.db-ai.co/apt/ubuntu/dists/focal/mongodb-org/5.0/multiverse/binary-amd64/mongodb-mongosh_1.5.1_amd64.deb 404 Not Found [IP: 193.200.16.49 443] ```
ت
pls help !
Deni Mamakaev
pls help !
Удали node_modules и сделай заново yarn install или npm i
Deni Mamakaev
потом попробуй запустить и покажи 🤓
Deni Mamakaev
мне кажется он ничего не понял, но все равно удачи ему 🤓
ت
Deni Mamakaev
fucking shit 🥹
ت
fucking shit 🥹
🤣🤣😂
Deni Mamakaev
Do you connect with internet on computer? Check it Or Check your local host port, maybe problem with him
Alexandrr
Понял, спасибо, а как лучше хранить данные которые описывают множество, без повторов, типа питонияего set(), нужно просто проверять есть ли в базе айди или нет
есть свойство коллекции при добавлении в него записи (документа), задаётся оператором, не помню каким, исключает повторы
ت
Do you connect with internet on computer? Check it Or Check your local host port, maybe problem with him
😵‍💫😵‍💫 my all google acc disabled in this pc many sites blocked me why i dont know☹️😵‍💫🤷🏻‍♂️
Alexandrr
гугли: "операторы монго запись документа"
ت
ت
i cant fix it (((
Konstantin
i cant fix it (((
atlas requires you to whitelist all ip addresses you're going to connect from. check network settings for your database, is your IP address listed?
Anonymous
Привет. Работаю в Grafana и одна из моих целей подсчитать количество определенных строк в документах Mongo Пробовал использовать count and sum, но ничего толгового не вышло Подскажите, возможно ли посчитать кол-во определенных строк в документах или нет? Если да, то как, или где я могу почитать об этом
yopp
Понял, спасибо, а как лучше хранить данные которые описывают множество, без повторов, типа питонияего set(), нужно просто проверять есть ли в базе айди или нет
Как такого set нет, но с помощью $addToSet при обновлении вы можете избежать дублирования записей https://docs.db-ai.co/docs/manual/reference/operator/aggregation/addToSet.html
Альберт
Всем привет. Мне вот просто интересно.. в монге можно как-то добиться перформанса агрегаций (скажем, лукапов), чтобы они работали так же быстро, как джойны? Один проект на саппорте был. Там ребята использовали монгу и эластик, и в эластик клали в денормализованном виде несколько монговских коллекций которые зависят друг от друга по айдишникам. Я не большой эксперт по монге, но перерыл много тем.. ничего хорошего не нашел:(
Альберт
готовьте структуру под нужные выборки и будут они быстры
то есть складывать все в одну коллекцию со вложенными объектами?
Nick
то есть складывать все в одну коллекцию со вложенными объектами?
в идеальном варианте - да, именно это и есть преимуществом монги над стандартными реляционками и почему бы это не использовать?
Андрей Михайлович
Коллеги, Как использовать результат запроса mongo в другом запросе? Мне нужно использовать поле в следующем запросе для update var result = db.getCollection('myCollection').find({_id: {$type: "number"}},{"_id":1}).sort({"_id":-1}).limit(1) Мне возвращается: { "_id" : NumberLong(7122383251849049088) } Как мне использовать число в update?
Андрей Михайлович
Если речь о драйвере для js, то результат будет доступен по ключу, например response["_id"]
А первый раз столкнулся с монгой (я тестер) и что имеется в виду под "драйвер под js" могу ошибаться. Я так-то общаюсь с ней напрямую. Тупо запросами. Вроде как не мой случай. В любом случае - я проверил, выполнив print(result["_id"]) Вывод: [unknown type]
yopp
А какой язык вы используете?
Андрей Михайлович
А какой язык вы используете?
Никакой. Тупо пишу запросы монге.
Андрей Михайлович
Ну, ладно. Проскочило, что тип shell. Потом удалено. Из этой логики можно сказать, что запросы к мускулу через cli, написанные тупо в стандарте sql тоже смешные. Но, может, у кого есть подсказка?
yopp
Никакой. Тупо пишу запросы монге.
Если вы используете mongoshell, то это javascript. Результатом выполнено запроса будет массив словарей. Значение из словаря можно получить по ключу. В вашем случае словарь состоит из одной записи, с ключом “_id” Для доступа к ключам в js используется оператор []
Deni Mamakaev
Никакой. Тупо пишу запросы монге.
Не знаю почему мой ответ удалили, возможно админ уж очень хочет помочь Но мне это сообщение очень понравилось. Удачи тебе ✊🏻
Андрей Михайлович
Если вы используете mongoshell, то это javascript. Результатом выполнено запроса будет массив словарей. Значение из словаря можно получить по ключу. В вашем случае словарь состоит из одной записи, с ключом “_id” Для доступа к ключам в js используется оператор []
Супер, спасибо. Только я не понимаю как мне это значение переиспользовать? Когда я пишу update, то получаю ошибку типа. Потому не понимаю, как мне использовать значение в моём случае.
yopp
Если вы сталкивались с sql, то вам могут помочь туториалы: https://docs.db-ai.co/docs/manual/tutorial/query-documents.html В них есть сопоставление с тем как запросы выполняются в монге
yopp
Например foo = db.pages.findOne({name: “bar”}) db.comments.findOne({_id: foo[“_id”]})
Андрей Михайлович
Например foo = db.pages.findOne({name: “bar”}) db.comments.findOne({_id: foo[“_id”]})
Я пробовал так: var query = db.getCollection('myCollection').find({},{"_id":1}).sort({"_id":-1}).limit(1) var largestValue= query.toArray()[0]["_id"]; var largestValue2 = printjson(largestValue + 1); db.getCollection('myCollection').insert( { "_id" : largestValue2, "another_id" : NumberLong(424527094220810) } ); Пока ошибка типа.
Андрей Михайлович
Например foo = db.pages.findOne({name: “bar”}) db.comments.findOne({_id: foo[“_id”]})
Я только не пойму из этого примера, почему коллекции разные?
yopp
Я только не пойму из этого примера, почему коллекции разные?
Из контекста показалось что речь о том чтоб выбрать документ в другой коллекции. Подскажите, а какие данные вы хотите получить?
yopp
В том смысле, что какую задачу вы решаете?
yopp
Вы хотите сделать поле с инкрементальным значением?
Андрей Михайлович
Из контекста показалось что речь о том чтоб выбрать документ в другой коллекции. Подскажите, а какие данные вы хотите получить?
Мне нужно взять числовой идентификатор, подобный приведённому "another_id" и подставить в запрос для Insert. По какой-то причине разрабы решили использовать численный идентификатор. Ищу способ вставлять без ошибок. Пробовал тупым циклом и инкрементом числа, которое я заранее подготовил руками первым запросом, но из-за параллельной работы с другими людьми случились коллизии. Тупо были вставки пока мой цикл шарашил.
yopp
К сожалению в том виде в котором эта задача решается в других субд, в монге инкрементальные значения / уникальные счётчики достаточно сложно реализуются. Т.е гарантировать вставку нового документа с _id который больше на единицу чем самый большой предыдущий невозможно. Так как между чтением и записью, как в вашем случае, могут добавиться новые документы. Судя по всему вы с этим и столкнулись, отсюда наблюдаемые вами коллизии. Если вы получаете duplicate error, то самый простой вариант это повторить операцию
yopp
Или если нет требования что значения должны обязательно увеличиваться, то генерировать случайные/псевдослучайные
yopp
try-catch в монге как в любом другом языке? Я просто пока с ними не сталкивался. Можно мне ссылку на доку, где описано как обрабатываются ошибки?
Да, try-catch-retry (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/try...catch) mongosh это по сути JavaScript repl на базе spidermonkey от мозиллы, в который встроен драйвер к монге. В нём вы можете использовать все фичи JS
Андрей Михайлович
Да, try-catch-retry (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/try...catch) mongosh это по сути JavaScript repl на базе spidermonkey от мозиллы, в который встроен драйвер к монге. В нём вы можете использовать все фичи JS
Только если всё так, то я в упор не понимаю, почему при обращении типа "_id" : result["_id"] я получаю "can't use a undefined for _id". Тогда оно действительно должно работать.