Vladimir
Спасибо
Nick
Всем привет, есть mean приложуха, хочу потестить и залить на vds, только вопрос база монго стоит сейчас локально у меня, как правильно залить ето дело на vds либо использовать хост удал. от самого монго либо лутше подругому?
несколько вариантов 1. самый простой - найти монгу в облаках и подключитсья к ней 2. настроить базу на впс рядом с прикладом, но тут вопрос к впске и наличии желания и времени ее настраивать (так то дело быстрое, но зависит от впс и ресурсов на ней) 3. через ssh тоннель до впс и по нему сделать проброс локальной базы на впску, но это подходит только для тестов до выбора одного из первых двух вариантов, т.к. нужно стабильное подключение
Nick
Я просто отключил _id там
тоже неплохое решение
Artem
мне нужно поставить пароль на соединение и разрешить удаленное подключение к монге только к этому юзеру, это реализуемо? дока сплошная по облаку..
yopp
мне нужно поставить пароль на соединение и разрешить удаленное подключение к монге только к этому юзеру, это реализуемо? дока сплошная по облаку..
Да, вам необходимо включить аутентификацию https://www.mongodb.com/docs/manual/tutorial/enable-authentication/#std-label-enable-access-control
yopp
SCRAM самый простой вариант https://www.mongodb.com/docs/manual/tutorial/configure-scram-client-authentication/
Artem
сделал, все работает ✨
Anonymous
salaam alaikum
tmp
Привет всем! Насколько mongodb хорошо держит запросы? Несколько тысяч в секунду смешанных запросов на чтение/добавление/обновление документов, на неслабой линуксовой тачке (8 ядер, 16 или 64 RAM, 1 гбит канал в обе стороны) вытянет?
tmp
И как его по максимуму оптимизировать?
Alexander
мне кажется тут в основном неспециалисты или начинающие специалисты)
Alexander
ну тогда пусть повезет! )
Andrey
ребят, помогите, уже какую неделю монга начала останавливаться, 4.2.1 крайние логи: 2022-04-27T08:43:24.951+0000 I TXN [conn5298] transaction parameters:{ lsid: { id: UUID("d731e818-38c5-4aef-ab08-789e4586791b"), uid: BinData(0, 830872FC3F605AFFB6F640ED87DB86D55DCD03BE1E29155D54CDA151B743588A) }, txnNumber: 199, autocommit: false, readConcern: { level: "snapshot" } }, readTimestamp:Timestamp(0, 0), keysExamined:64 docsExamined:50 terminationCause:committed timeActiveMicros:15563 timeInactiveMicros:137671 numYields:0 locks:{ ReplicationStateTransition: { acquireCount: { w: 2 } }, Global: { acquireCount: { w: 1 } }, Database: { acquireCount: { w: 1 } }, Collection: { acquireCount: { w: 3 } }, Mutex: { acquireCount: { r: 3 } } } storage:{} wasPrepared:0, 153ms 2022-04-27T08:44:29.959+0000 I CONTROL [signalProcessingThread] got signal 15 (Terminated), will terminate after current cmd ends 2022-04-27T08:44:29.960+0000 I REPL [RstlKillOpThread] Starting to kill user operations 2022-04-27T08:44:29.961+0000 I REPL [RstlKillOpThread] Stopped killing user operations 2022-04-27T08:44:31.107+0000 I NETWORK [conn5304] end connection 10.255.0.235:51446 (12 connections now open) 2022-04-27T08:44:39.961+0000 I REPL [RstlKillOpThread] Starting to kill user operations 2022-04-27T08:44:39.961+0000 I REPL [RstlKillOpThread] Stopped killing user operations 2022-04-27T08:44:39.963+0000 I STORAGE [signalProcessingThread] Failed to stepDown in non-command initiated shutdown path ExceededTimeLimit: No electable secondaries caught up as of 2022-04-27T08:44:39.961+0000. Please use the replSetStepDown command with the argument {force: true} to force node to step down. 2022-04-27T08:44:39.974+0000 I NETWORK [signalProcessingThread] shutdown: going to close listening sockets... 2022-04-27T08:44:39.974+0000 I NETWORK [signalProcessingThread] removing socket file: /tmp/mongodb-27017.sock 2022-04-27T08:44:39.975+0000 I - [signalProcessingThread] Stopping further Flow Control ticket acquisitions. 2022-04-27T08:44:39.976+0000 I REPL [signalProcessingThread] shutting down replication subsystems 2022-04-27T08:44:39.976+0000 I REPL [signalProcessingThread] Stopping replication reporter thread 2022-04-27T08:44:39.976+0000 I REPL [signalProcessingThread] Stopping replication fetcher thread 2022-04-27T08:44:39.976+0000 I REPL [signalProcessingThread] Stopping replication applier thread 2022-04-27T08:44:39.979+0000 I REPL [rsSync-0] Finished oplog application что может быть не так?
Alexander Cheprasov
Всем привет! Читаю книги по монге и не могу понять пример по работе с текстовым индексом Как в выборку попал Tektite и ещё несколько других?
Tony
отличный пример привели, хотели показать как работает, а показали что не работает)
Daniil
Всем привет! Читаю книги по монге и не могу понять пример по работе с текстовым индексом Как в выборку попал Tektite и ещё несколько других?
на самом деле в выдаче указано только _id и title и непонятно для каких полей создан текстовый индекс
Wassilevs
так как мы не видим сам индекс по тексту, то просто верим на слово, что в 10 доках которые вернулись есть в тексте ключевые слова по которому выполнялся поиск
Daniil
Пример говно безусловно, особенно если где то выше не описывался индекс и полностью не показывались данные, но не факт, что ошибочный
Alexander Cheprasov
на самом деле в выдаче указано только _id и title и непонятно для каких полей создан текстовый индекс
Вот создание индекса, но они не показывают body нигде Так что может он ищет по нему?
Daniil
Вот создание индекса, но они не показывают body нигде Так что может он ищет по нему?
Он ищет и по title и по body, если в title совпадений нет, то стоит думать, что они нашлись в body, тем более если body не показывают
Nick
ребят, помогите, уже какую неделю монга начала останавливаться, 4.2.1 крайние логи: 2022-04-27T08:43:24.951+0000 I TXN [conn5298] transaction parameters:{ lsid: { id: UUID("d731e818-38c5-4aef-ab08-789e4586791b"), uid: BinData(0, 830872FC3F605AFFB6F640ED87DB86D55DCD03BE1E29155D54CDA151B743588A) }, txnNumber: 199, autocommit: false, readConcern: { level: "snapshot" } }, readTimestamp:Timestamp(0, 0), keysExamined:64 docsExamined:50 terminationCause:committed timeActiveMicros:15563 timeInactiveMicros:137671 numYields:0 locks:{ ReplicationStateTransition: { acquireCount: { w: 2 } }, Global: { acquireCount: { w: 1 } }, Database: { acquireCount: { w: 1 } }, Collection: { acquireCount: { w: 3 } }, Mutex: { acquireCount: { r: 3 } } } storage:{} wasPrepared:0, 153ms 2022-04-27T08:44:29.959+0000 I CONTROL [signalProcessingThread] got signal 15 (Terminated), will terminate after current cmd ends 2022-04-27T08:44:29.960+0000 I REPL [RstlKillOpThread] Starting to kill user operations 2022-04-27T08:44:29.961+0000 I REPL [RstlKillOpThread] Stopped killing user operations 2022-04-27T08:44:31.107+0000 I NETWORK [conn5304] end connection 10.255.0.235:51446 (12 connections now open) 2022-04-27T08:44:39.961+0000 I REPL [RstlKillOpThread] Starting to kill user operations 2022-04-27T08:44:39.961+0000 I REPL [RstlKillOpThread] Stopped killing user operations 2022-04-27T08:44:39.963+0000 I STORAGE [signalProcessingThread] Failed to stepDown in non-command initiated shutdown path ExceededTimeLimit: No electable secondaries caught up as of 2022-04-27T08:44:39.961+0000. Please use the replSetStepDown command with the argument {force: true} to force node to step down. 2022-04-27T08:44:39.974+0000 I NETWORK [signalProcessingThread] shutdown: going to close listening sockets... 2022-04-27T08:44:39.974+0000 I NETWORK [signalProcessingThread] removing socket file: /tmp/mongodb-27017.sock 2022-04-27T08:44:39.975+0000 I - [signalProcessingThread] Stopping further Flow Control ticket acquisitions. 2022-04-27T08:44:39.976+0000 I REPL [signalProcessingThread] shutting down replication subsystems 2022-04-27T08:44:39.976+0000 I REPL [signalProcessingThread] Stopping replication reporter thread 2022-04-27T08:44:39.976+0000 I REPL [signalProcessingThread] Stopping replication fetcher thread 2022-04-27T08:44:39.976+0000 I REPL [signalProcessingThread] Stopping replication applier thread 2022-04-27T08:44:39.979+0000 I REPL [rsSync-0] Finished oplog application что может быть не так?
ключевое CONTROL [signalProcessingThread] got signal 15 (Terminated), will terminate after current cmd ends гуглеж показал что тут либо проблемы с настройками https://stackoverflow.com/questions/38059330/mongodb-crash-got-signal-15-terminated либо ктото действительно прибивает монгу - тут настраивать аудит действий и отсматривать системные логи ну и на всякий раз уж итак то и дело стопается обновитесь до последний версий
Артем
Всем привет, вот у меня есть описанные коллекции такими классами class ChatRoom(Document): total_messages: int = IntField(default=0) class MessageV2(Document): chat_room: ChatRoom = ReferenceField(ChatRoom, required=True) number_id: int = IntField() # номер сообщения в чате Как мне поступить, чтоб обеспечить хоть какую то атомарность вставки сообщения и актуальности его number_id? Суть в чем, что я вставляю сообщение, инкрементирую счетчик сообщений в чате, присваиваю номер сообщению равный счетчику сообщения в чате. Примерно следующим образом. chat = ChatRoom.objects.get(id=chat_id) chat.total_messages += 1 message = MessageV2(chat_room=chat, number_id=chat.total_messages).save() chat.save() C монгой знаком не сильно, вижу есть какой-то инструмент агрегаций (свой фреймворк) и не пойму подходт ли он мне? ЗАпустить транзакцию из питонячьего кода не представляется возможным.
tmp
Всем привет, как в монго взять sample с параметрами? Например мне нужно N случайных документов, где одно поле меньше или равно M
tmp
Просто сделать запрос с ограничением на n документов?
Хм, и сделать рандомными не через сэмпл
tmp
Действительно)
Tony
https://database.guide/3-ways-to-return-a-random-sample-of-documents-from-a-mongodb-collection/
Комёб
Привет появилась такая ошибка "Server Error option usecreateindex is not supported" как это исправить?
Oleg
привет всем, как адекватно пройтись по всей коллекции, при это запрашивая например 100 элементов, что то выполнять, а потом следующие 100 элементов и так далее есть ли в монге что то встроенное для этого? или только с помощью limit и skip
Oleg
курсор?
уже разобрался, спс
Дима
Привет. Такой вопрос. Допустим у меня есть что-то типу этого: "chat_users": [ { "user_id": 1041161677, "user_name": «Игрок 1» }, { "user_id": 1053385663, "user_name": «Игрок 2» } ] Как подсчитать количесвто этих элементов внутри?
Сароар🧑🏼‍🦱
как обновлять все db.words.updateMany({ $set: { userId: ObjectId("624c31898addf0419b877915") }}); uncaught exception: TypeError: can't convert undefined to object : DBCollection.prototype.updateMany@src/mongo/shell/crud_api.js:648:20
Сароар🧑🏼‍🦱
вот так я попробовал
Nick
как обновлять все db.words.updateMany({ $set: { userId: ObjectId("624c31898addf0419b877915") }}); uncaught exception: TypeError: can't convert undefined to object : DBCollection.prototype.updateMany@src/mongo/shell/crud_api.js:648:20
как выше написали, по факту у вас пропущено условие выборки, и чтобы выбрало все надо пустое условие бахнуть {}
Сароар🧑🏼‍🦱
@P1GAS спасибо
P1GAS
@P1GAS спасибо
Обращайтесь)
Сароар🧑🏼‍🦱
Обращайтесь)
[ INFO ] GET /admin/words [request-id: 3405CADF-0938-4057-96FF-D38A12DAAA74] [ WARNING ] invalid field: userId type: ObjectId error: Couldn't find type ObjectId at path "[]" [request-id: 3405CADF-0938-4057-96FF-D38A12DAAA74]
Сароар🧑🏼‍🦱
можеть быть она не видить userId
Сароар🧑🏼‍🦱
Vladimir
И как его по максимуму оптимизировать?
Методы lean, лимиты, сортировки, индексы Машинка если мощная, то да Главное nvme пусть стоит)
Vladimir
И как его по максимуму оптимизировать?
Телеграмм на монге стоит, о чём речь выдержит ли
Inline ®
Здравствуйте, подскажите, если я в двух разных скриптах использую одну базу данных и постоянно подключаюсь к ней и одного скрипта из з другого. Ничего страшного в этом нет?
Inline ®
а что с ней может случится?
Да пёс его знает 😁
Oleg
Здравствуйте, есть базовая информация о товаре, и его цена которую нужно сохранять в базу раз в час. Как лучше реализовать схему? Встраивать цену в массив или же делать ссылку в специальной коллекции для цен на родителя?
Nick
Здравствуйте, есть базовая информация о товаре, и его цена которую нужно сохранять в базу раз в час. Как лучше реализовать схему? Встраивать цену в массив или же делать ссылку в специальной коллекции для цен на родителя?
А что с этой ценой происходит? Ее надо в привязке ко времени хранить историю, т.е для отслеживания динамики, или цена обновляется и старая уже не нужна?
Oleg
А что с этой ценой происходит? Ее надо в привязке ко времени хранить историю, т.е для отслеживания динамики, или цена обновляется и старая уже не нужна?
хранить историю, если использовать массив, рационально ли будет брать slice -1 для получения актуальной цены, или лучше сделать доп поле рядом в документе, спасибо
Adatan
@yatoba блокни спам бота с реакциями пж
Nick
@yatoba блокни спам бота с реакциями пж
Найти не могу, может уже выпилился
Oleg
благодарю всех за информацию, а если допустим обновление цены было бы каждую минуту, получается быстро закончились бы 16 мб. Нужно было бы делать коллекцию с ссылкой на родителя и добавлять индекс на родителя или есть какуе-то другие бест практикс решения
Nick
Но это надо ручками реализовывать, но иногда реально имеет смысл
Andrey
благодарю всех за информацию, а если допустим обновление цены было бы каждую минуту, получается быстро закончились бы 16 мб. Нужно было бы делать коллекцию с ссылкой на родителя и добавлять индекс на родителя или есть какуе-то другие бест практикс решения
у монги появились временные ряды, может быть этим воспользоваться https://www.mongodb.com/time-series вообще актуальную цену лучше хранить в документе, который тянется при вытягивании товара, а историю уже в отдельной коллекции
Andrey
кстати, мб кто в курсе. А есть ли какие-то лимиты в монге на число коллекций?
их динамечески плодить не стоит, речь больше о том как минимальным кол-вом запросов (например страница товара) вытащить все, что нужно
Eshu
а вопрос по time-series коллекциям, а индексы по каким-то полям в мета информации строить можно, интересно?
Ilshat
кстати, мб кто в курсе. А есть ли какие-то лимиты в монге на число коллекций?
Явных ограничений нет, но если будет очень много, то системные коллекции, в которых хранится информация по коллекциям будут пухнуть и работать медленно
Дима
Привет. Вопрос например есть запрос aggregate, внутри $project и высчитывается например умножение двух значений и записывается в sumOfGroup, можно как-то потом в этом же $project использовать sumOfGroup? Чтобы после этого вычисления ещё разделить это число на 100 надеюсь понятно объяснил. Вот пример, но он не работает: db.users.aggregate([ { $match: { id: 1 } }, { $project: { _id: 0, sumOfGroup: {$multiply: ["$balance", "$percent"]}, divideSum: {$divide: [sumOfGroup, 100]} } } ])
Eva🇺🇦
AggregationCursor в mongoose удален?
Andrey
gql'ом
gql к сожалению не решит проблему, узкое место БД и тут нужен баланс между средний объем документа и кол-во запросов к БД для самых популярных операций все в один запихнуть тоже не всегда верно, если частое обновление, то будут блокировки или же если большая часть дока неиспользуема в 90% сценариев - считай нагрузка на сеть (гкл как раз решит только это)
ReactIsFramwork
прошу прощение - термин запрос интерпритировал неверно
Дима
Внутри этого же проджекта нельзя
А как можно? Есть пример?
Nick
А как можно? Есть пример?
Еще один проджект или addFields стейдж
Null
помог
Никита
Не силён в питоне, но кажется, будто запрос должен вызываться с await, либо передавать параметром callback