@MongoDBRussian

Страница 274 из 342
Roman
24.07.2018
14:24:07


Iván
24.07.2018
14:24:51
Hi guys. Anyone speaks english here?

Roman
24.07.2018
14:25:21
на сервере заканчивалось место и монга падала! но потом я почистил левак и она завелась! может чего он отключил когда небыло места и нужно включить?

AstraSerg
24.07.2018
14:26:27
когда делаю коннект через пхп там mongodb://127.0.0.1:27017/admin а когда через консоль то на запрос $ db отдает только test
После / должно идти название рабочей БД. Если авторизация проходит через БД admin, то нужно к параметрам добавить &authSource=admin

Google
AstraSerg
24.07.2018
14:26:50
Iván
24.07.2018
14:26:58
Roman
24.07.2018
14:27:04
так а как это сделать в консоле?

Iván
24.07.2018
14:27:07
I wanted to know which MongoDB should I download

Roman
24.07.2018
14:27:32
с сайта все работает

Iván
24.07.2018
14:27:41
Because there are different versions of it. Like Atlas/Community Server, etc

I will use MongoDB for a course

AstraSerg
24.07.2018
14:33:27
yopp
24.07.2018
14:34:00
Because there are different versions of it. Like Atlas/Community Server, etc
Go with atlas if you fine with using cloud/remote access. If you need offline/local go with Community.

Iván
24.07.2018
14:34:13
Perfect

yopp
24.07.2018
14:34:14
We have English group: @mongo_db

Google
Bandikoot
24.07.2018
15:53:34
так а как это сделать в консоле?
для работы с консолькой почитай про директиву use, например. а также стоит понимать, что бд, с которой работаешь и бд, в которой авторизуешься, могут быть и разными

Roman
24.07.2018
15:55:17
Ну да я разобралсч спасибо. Просто в доке было написано что команда дб вернет доступные базы

И кода он возвращал одну то меня это стопарило

А он походу возвращал тукущую

Bandikoot
24.07.2018
15:57:21
show dbs попробуй

в общем, https://docs.mongodb.com/manual/reference/mongo-shell/

Roman
24.07.2018
15:58:21
Да да там я и нашел ответ при очноедном просмотре

Спасибо

Sergey
24.07.2018
16:30:42
Всем доброго дня! Подскажите плиз, python, pymongo. Есть две коллекции, в одну сохраняются товары текущего парсинга (перед парсингом коллекция дропается), во вторую – тоже самое, но там товары накапливаются и появляется дополнительное поле-массив с датами, когда товар был доступен. Индексы в обеих коллекциях по _id и uuid. Для обновления данных во второй коллекции пытаюсь использовать конструкцию: db[collection].update(item, {"$addToSet": {'avl_date': date}}, upsert=True) item вот такого вида: item ={'uuid': '89579073-237f-50bb-a51c-8ba4c93b1edb', 'sku': '311565011', 'outOfStock': True, 'category': 'Toys & Entertainment/Technology & Electricals /Radios', 'brand': 'View Quest', 'price': {'currentPrice': '£65', 'unitPrice': '£65 each'}, 'avl_date': ['2018-07-22', '2018-07-23'], 'name': 'Blue Retro Mini Digital Radio', '_id': ObjectId('5b546efeb859c869112da997')} пробовал с полем _id и без, с полем avl_date и без. Выдает ошибку дубликата ключа по uuid. Работает вот так: db[collection].update({‘uuid’: item[‘uuid’]}, {"$addToSet": {'avl_date': date}}, upsert=True) но тут вопрос, если продукта с таким uuid нет, то он должен вставить документ (как я пробовал это сделать в первом случает), а где его указать в этой конструкции?
Еще раз поинтересуюсь, вечером как то более оживленно здесь

Constantin
24.07.2018
16:34:14
Всем привет! А кто-то уже успел «в бою» испытать транзакции?

Dmitry
24.07.2018
16:41:58
в новом релизе добавили

https://www.mongodb.com/press/mongodb-announces-multi-document-acid-transactions-in-release-40

например, очень важная штука для банка

когда нужно одновременно уменьшить баланс у одного аккаунта и увеличить у дрогого, при переводе денег

если одна из операций упадет, вторая тоже должна откатиться, для этого придумали транзакционность, когда несколько запросов пушатся в одной транзакции

но вообще я хз, особо их не юзал :))

Constantin
24.07.2018
18:38:30
Всем доброго дня! Подскажите плиз, python, pymongo. Есть две коллекции, в одну сохраняются товары текущего парсинга (перед парсингом коллекция дропается), во вторую – тоже самое, но там товары накапливаются и появляется дополнительное поле-массив с датами, когда товар был доступен. Индексы в обеих коллекциях по _id и uuid. Для обновления данных во второй коллекции пытаюсь использовать конструкцию: db[collection].update(item, {"$addToSet": {'avl_date': date}}, upsert=True) item вот такого вида: item ={'uuid': '89579073-237f-50bb-a51c-8ba4c93b1edb', 'sku': '311565011', 'outOfStock': True, 'category': 'Toys & Entertainment/Technology & Electricals /Radios', 'brand': 'View Quest', 'price': {'currentPrice': '£65', 'unitPrice': '£65 each'}, 'avl_date': ['2018-07-22', '2018-07-23'], 'name': 'Blue Retro Mini Digital Radio', '_id': ObjectId('5b546efeb859c869112da997')} пробовал с полем _id и без, с полем avl_date и без. Выдает ошибку дубликата ключа по uuid. Работает вот так: db[collection].update({‘uuid’: item[‘uuid’]}, {"$addToSet": {'avl_date': date}}, upsert=True) но тут вопрос, если продукта с таким uuid нет, то он должен вставить документ (как я пробовал это сделать в первом случает), а где его указать в этой конструкции?
В секции, где $addToSet добавить нужно $setOnInsert https://docs.mongodb.com/manual/reference/operator/update/setOnInsert/index.html — вот тут есть пример

Maxim
24.07.2018
20:14:49
Привет !

Google
Maxim
24.07.2018
20:15:39
подскажите пожалйста - как можно с существующей MongoDB ну или моделек с монгуза получить красивую DBSchema ? (Это как ЕRD для реляционок, только более общее понятие). Я понимаю что в монге и связей между колекциями как таковых нету, но всё же

пришёл на новый проек, модельки вижу, но трудно собрать раму что к чему

юзаем по идее MongoDB Atlas

Анатолий
25.07.2018
05:21:47
мне кажется монгодб это не та бд в которой имеет место быть схема бд... документ он же может быть любой... список коллекций можете получить командами. а вот какие у документов есть поля - это лучше спрашивать у тех кто делал проект до вас, либо смотреть по коду что туда пишется.

Nick
25.07.2018
07:44:52
подскажите пожалйста - как можно с существующей MongoDB ну или моделек с монгуза получить красивую DBSchema ? (Это как ЕRD для реляционок, только более общее понятие). Я понимаю что в монге и связей между колекциями как таковых нету, но всё же
В отношении монги такого нельзя получить. Попробуйте найти для вашего орм может что будет, но маловероятно. В общем случае носкл на то и носкл чтобы не иметь схем

Nick
25.07.2018
07:58:35
Да и на самом деле диаграммы рисуются людьми при разрабоике не хуже тулов, если в вашем текущем проекте все еще нет описания бд и схем, а сама структура бд уже устоялась и особо не меняется, то совместите приятное с полезным - опишите все и сами разберетесь и спека по базе будет

AstraSerg
25.07.2018
08:30:31
пришёл на новый проек, модельки вижу, но трудно собрать раму что к чему
Добрый день. Удобный инструмент для этого Comapss. Покажет какие поля присутствуют в коллекция, во всех ли документах и т.п. Видос: https://youtu.be/XfLeO_LE6ic?t=86 Скачать: https://www.mongodb.com/download-center?jmp=hero#compass

Геннадий
25.07.2018
11:41:53
Всем привет. Подскажите, пожалуйста, как убрать лишние сообщения в логах? Уже установил logLevel в 0, quiet тоже стоит. У меня множественные коннекты к БД и остался спам сообщения: mongod[25605]: 2018-07-25T14:38:00.709+0300 I NETWORK [conn1] received client metadata from 127.0.0.1:33528............. Как это убрать на фиг?

Геннадий
25.07.2018
11:44:47
Это вам в консоль сыпется?
Ну куда настрою, туда и сыпится. И в логфайл сыпалось, сейчас у меня journalctl используется, теперь туда (через syslog).

AstraSerg
25.07.2018
11:46:47
Ну куда настрою, туда и сыпится. И в логфайл сыпалось, сейчас у меня journalctl используется, теперь туда (через syslog).
Судя по I в сообщении - это уровень info, а тут https://docs.mongodb.com/manual/reference/method/db.setLogLevel/ пишут, что ниже него сделать нельзя

> Ну куда настрою, туда и сыпится Может в /dev/null настроите? Там и места побольше и IO жрать не будет :)

Геннадий
25.07.2018
11:48:22
Да я это уже прочитал, и прямо, и задом наперёд. Поэтому и пишу. У меня в результате машина половину ресурсов тратит не на полезную работу, а на спам вот этого. Драйвер переписывать - тоже не айс идея.

Ну дело пахнет к /dev/null, но блин, у меня только что было ощущение, что можно делать прямо, красиво. Выводить всякие ошибки и ворнинги, читать их по утрам вместе со свежей прессой. Ан... нет. Опять через ж...

AstraSerg
25.07.2018
11:51:05
а не пробовали db.setLogLevel(-1, "network" ) ?

Геннадий
25.07.2018
11:51:50
Дык -1 это использовать родительскую настройку. А родительская можетбыть только 0, -1 поставишь - не стартанёт.

Google
Геннадий
25.07.2018
11:52:19
Ладно. Плюнул. Дефнул.

AstraSerg
25.07.2018
11:52:37
больше мыслей нет

Геннадий
25.07.2018
11:53:26
больше мыслей нет
Спасибо за попытку :)

AstraSerg
25.07.2018
11:54:05
Геннадий
25.07.2018
11:56:00
Половина ресурсов на логи?
Это художественная гипербола, литературный приём для подчёркивания моего негодования. Ну на самом деле journal настроен у меня сейчас не писать логи на диск, только в памяти. Сейчас парсится на виртуалке база около 40 гигов, там парсится бэкэндом большой xml и распихивается всё в MongoDB. Ну так journal при обработке логов процессор жрёт неплохо, ибо идёт спам от монги.

yopp
25.07.2018
11:58:00
Информация о подключениях не просто так остаётся в логах. Если у вас в логах много сообщений о подключениях, то скорее всего вам необходимо использовать connection pool

AstraSerg
25.07.2018
11:58:02
@GennadyKovalev Чёт как-то странно это....

yopp
25.07.2018
11:58:29
Открытие соединения — дорогая операция, особенно если используется TLS

AstraSerg
25.07.2018
11:59:25
Открытие соединения — дорогая операция, особенно если используется TLS
Тогда не логи грузят систему, а открытие соединений и оптимизировать нужно в этом месте.

Геннадий
25.07.2018
12:00:50
Про connection pool, про драйвера - это всё очень понятно. У меня вопрос не как убрать множественные коннекты, ибо это вопрос драйвера, а как убрать сообщения в логах. С драйвером мне всё понятно.

Геннадий
25.07.2018
12:02:43
Метрики говорят, что пока грузит обработка логов. У меня задача за неделю файл распарсить, переписыванием драйверов я не хочу сегодня заниматься :) Ну /dev/null спасёт мир.

yopp
25.07.2018
12:03:55
Отключите обработку логов и пишите в файл. Даже на высоконагруженных кластерах логгирование это около одного-двух мегабайт в секунду

Геннадий
25.07.2018
12:04:43
Зачем мне писать логи в файл и дополнительно грузить диск, если я это читать не буду?

yopp
25.07.2018
12:04:46
Это sequential write, который в таких объёмах не является проблемой

AstraSerg
25.07.2018
12:05:04
Сделал: while true; do echo hellohellohellohellohellohellohello | systemd-cat; done получилось: PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 19771 root 20 0 27676 8248 3160 S 28.6 0.1 0:07.58 bash 265 root 20 0 41580 9516 7032 S 9.0 0.1 0:12.55 systemd-journal Не то что бы сильно много и это с записью в файл

Геннадий
25.07.2018
12:05:19
Вот, пожалуйста, /dev/null и грузит только мой бэк и монга. Всё нормуль.

Google
yopp
25.07.2018
12:06:50
Моя мысль в том, что у вас проблемы не с самим фактом журналирования, а где-то на этапе обработки журнала. Если это продуктивная инсталляция, то лечить надо причину, а не симптом

Геннадий
25.07.2018
12:06:57
@AstraSerg ну понятно, у меня покруче нагрузочка была. bash несколько медленее...

AstraSerg
25.07.2018
12:09:18
@AstraSerg ну понятно, у меня покруче нагрузочка была. bash несколько медленее...
Неужели количество установок соединений был больше чем echo в цикле? Жуть какая! Тогда вам точно нужно что-то делать с переиспользованием соединений, а то реально катострофа...

Геннадий
25.07.2018
12:09:50
Моя мысль в том, что у вас проблемы не с самим фактом журналирования, а где-то на этапе обработки журнала. Если это продуктивная инсталляция, то лечить надо причину, а не симптом
Мысль ясна. Но первопричина всё-таки это а) множественные конекты - вопрос к драйверу, б) лишнее логгирование, которое мне не нужно.

yopp
25.07.2018
12:11:09
Как я уже говорил: несколько мегабайт журнала в секунду (тысячи записей в журнал в секунду) , не должны являться проблемой. Если это является проблемой, это серьезный симптом

Геннадий
25.07.2018
12:11:18
@AstraSerg ну я вчера залез в исходники драйвера... и как-то сник :) Если бы, как всегда, не срочность... Ну я сейчас обработаю свои 40 гигов с /dev/null, потом займысь выпрямлением количества коннектов.

Геннадий
25.07.2018
12:28:07
Как я уже говорил: несколько мегабайт журнала в секунду (тысячи записей в журнал в секунду) , не должны являться проблемой. Если это является проблемой, это серьезный симптом
Да выша мысль-то понятна. По-умолчанию systemd-journald` использует временное хранилище, которое живёт на `tmpfs`. Настраивать это можно сколь угодно долго, но это теоретически упрется в ресурс. Либо дай диск для хранение объёма, либо настрой фильтр чего логировать, а чего нет - это процессор, либо дай оперативки для хранения, либо настрой стирание старых записей - это тоже процессор. В данном случае у меня упор ушёл в процессор. И то не упор, а просто увидел, что "поджирает...". Можно долго настраивать всякие rate limit и не собирать много сообщений от одой службы, но фокус вопроса не как обработать поток дряни, у меня вопроса тут нет. А почему вообще этот поток существует. С учётом того, что множественные соединения я прямо сегодня победить не могу, вот и задал вопрос как отключить поток всякого г... от монги. А то я может в читал доку и в упор чего-то не увидел. Ответ получил. Тоже никак. Ну значит срочняк решим с /dev/null, а лечить будем драйвер, а не обработку ненужного потока г...

AstraSerg
25.07.2018
12:31:35
> а лечить будем драйвер А что за язык, если не секрет?

Геннадий
25.07.2018
12:59:29
Питон, c motor.

AstraSerg
25.07.2018
12:59:55
Питон, c motor.
Так pymongo жеж

Геннадий
25.07.2018
13:01:08
motor - обёртка для pymongo для поддержки ассинхронности. Вернее для псевдоассинхронности.

Страница 274 из 342