Oleh Kopyl
Сделайте на всякий случай бекап через mongodump теперь 🙂
Но он же не сохраняет стейт. Он только сохранят базы внутри... У меня на одном сервере куплены бекапы сервера. Видимо и на этот сервер покупать бекапы придется
Kirill
Ребята, а как строится геокластер на монге? Который полноценно федеративный. В каждом регионе или стране есть федерация кластера, она хранит данные привязанные к региону и из таких федераций общик кластер. Нашел по Atlas ответ, а какой по Mongo CE или EE для собственной инсталляции? Как распределяются данные? (какие куда для соблюдения федеративного хранения) Кто у кого мастер, к кому можно обратиться? Есть ли форвард запросов, которые пришли не в ту федерацию? Что происходит при разделении федерации и разделении кластера? Если федерация не доступна полностью в одном регионе, кто выбирается резервом?
Olga Tomakhina 💛
А может кто знает как сделать replaceAll with regex ?
Anonymous
флаг g
Olga Tomakhina 💛
флаг g
можете прояснить?
El
можете прояснить?
https://t.me/regex_ru g for global, собрать все встреченные случаи искомого. Гуглится несложно.
El
Как собирание всех инстансов заменяемого могло бы помочь.
🏳️‍🌈Сель
Привет всем 🤔 допустим, если я хочу сохранять информацию о пользователях с телеграмма по их id, стоит ли мне использовать свойство Документа _id, или лучше создать новое свойство id / userId для этого?
Olga Tomakhina 💛
привет! скажите, пожалуйста, а существующий кластер без шардов, но только replicaset - можно добавить шардирование на лету?
Р00-👨🏻‍💻Михаил
Добрый вечер Есть коллекция с подписчиками новостной рассылки в телеграм Рассылки обозначены в другой коллекции а в коллекции подписчиков просто проброшен указатель к какому каналу он подписан И есть telegram id Встал вопрос узнать среди подписчиков сколькие из них подписаны сразу на несколько каналов Как это можно сделать с помощью аггрегаций? В базе есть не уникальный telegramId который может дублироваться и канал на который юзер подписан. И на входе получается канал по которому нужно посмотреть сколько в коллекции пользователей имеют такой же telegram id но уже к другому каналу
Р00-👨🏻‍💻Михаил
Я нашел решение когда расписал вопрос Делать $group с _id как объект с двумя полями Тогда можно сгруппировать не уников и потом с помощью $match их отловить А затем уже сделать поиск по необходимому полю Но есть загвоздка очень много записей и выдает ошибку exceeded memory limit
Р00-👨🏻‍💻Михаил
Нужна миграция похоже И всего делов
🏳️‍🌈Сель
Потоковой обработке? А зачем она может понадобиться? И с прерыванием ещё...
Eva🇺🇦
Привет! У моего поста есть поле score, которое расчитывается по формуле через agenda.js (то есть раз в час у меня запускается job, делает выборку из 50 доков, обновляет им это поле). Соответственно, нужно знать, когда был последний апдейт этого поля. Как я понимаю, ласт апдейт всего документа не подойдет, т.к. есть и другие поля. Как обычно чекают ласт апдейт филда? Нужно значение филда оъектом сделать {updatedAt: … , score: … }? Или есть другая бест практис? Спасибо!
Anonymous
Добрый день, подскажите, что надо прописать в конфиге монги, чтобы через ssh напрямую к ней можно было подключаться, развернуто на centos7. Версия 4.4 Ранее в докере работала с официального образа с докерхаба,и можно было, и вебморду подключить (robo3t, ещё какая-то) к бд, и никаких проблем. Но отказались от монги в контейнере, и что-то ни фига к ней не подключиться напрямую из вне. Ssh error. Приходится на сервер заходить сам по ssh, и там уже коннектиться Нагуглить,увы,не вышло
Joe
Добрый день, подскажите, что надо прописать в конфиге монги, чтобы через ssh напрямую к ней можно было подключаться, развернуто на centos7. Версия 4.4 Ранее в докере работала с официального образа с докерхаба,и можно было, и вебморду подключить (robo3t, ещё какая-то) к бд, и никаких проблем. Но отказались от монги в контейнере, и что-то ни фига к ней не подключиться напрямую из вне. Ssh error. Приходится на сервер заходить сам по ssh, и там уже коннектиться Нагуглить,увы,не вышло
в robo3t нужно заполнить форму с ssh при этом учти, что робо3т не умеет работать со скрытыми директориями работать (таковым является .ssh/ где хранятся твои ключи) нужно приватник ssh скопипастить в публичную директорию (например ssh/) и указать файл по тому пути робо3т З.ы. проблема по описанию не с монгой а с подключением к серверу вариант 2й: ssh тунелирование(port forwarding) можно пробросить порт монги на локальную машину и подключаться к ней ssh -L 27018:localhost:27017 YOUR_USERNAME@REMOTE_IP YOUR_USERNAME и REMOTE_IP замени на свои а параметр -L 27018:localhost:27017 указывает что нужно 27017 порт(монги) из удаленной машины пробросить на локальную машину в порт 27018 и после этого клиенту когда будет цепляться к монге нужно указать 27018 порт думаю поможет)
Sreenatha Reddy K R (Sree)
Good bye
Максим
подскажите в каком формате хранятся изображения если заливать в монгу?
Максим
base64?
Joe
а монга всегда работает на 27017 порту?
По умолчанию, можно настроить
Максим
можешь помочь с моим вопросом?
Олег
Всем привет, подскажите пожалуйста что я делаю не так, почему мне не добавляет id в массив, спасибо)
Олег
Viktar
https://docs.mongodb.com/manual/reference/operator/update/push/
Viktar
https://docs.mongodb.com/manual/reference/operator/update/addToSet/
Олег
https://docs.mongodb.com/manual/reference/operator/update/push/
Попробовал, к сожалению тоже не добавляет((
Viktar
На первый взгляд ошибки не вижу. Посмотрите что приходит в ваши переменные
Viktar
Возможно, дело в вашей схеме, судя по всему там ожидается ид
Viktar
А не объект {id:ид}
Олег
Возможно, дело в вашей схеме, судя по всему там ожидается ид
Я сменил схему на addUsers: [{"id": String}] и все как было
Ilya
Anonymous
Не всегда _id возрастает - есть граничный случай. Когда счетчик в младших битак objectid переполняется, он обнуляется. И если одновременно не настанет следующая секунда _id уменьшится относительно предидущего.
Anonymous
/spam
Anton
Как в Mongo updateOne() сделать $set: {‘foo.bar’: ‘value’} если foo не существует в документе
Anton
Просто если сделать $set: {foo: {bar: ‘value’}} то таким образом если ‘foo’ существовал, то он бы затерся
Danil
Здравствуйте, у меня такая проблема, я хочу выводить в боте из базы данных, но пишет вот такое вот, в консоли ошибок нет
Danil
Anton
а стой
Danil
await collection.find()
Ошибку выводит
Anton
там надо в массив курсор конвертнуть
Danil
там надо в массив курсор конвертнуть
А как, не можете подсказать?
Anton
list(collection.find())
Anton
оберни в list()
Danil
В переменной?
Anton
В переменной?
ну у тебя идет collection.find(…)
Danil
Ну в leadp, ок, попробую, спасибо
Anton
а нужно list(collection.find())
Anton
Ну в leadp, ок, попробую, спасибо
ну типа. Но будь готов, find() возвращает каждый раз массив данных (а точнее курсор). Если тебе нужен один документ то используй find_one() и тогда в list() ничго не надо будет оборачивать
Danil
а нужно list(collection.find())
Вывело в консоль TypeError: 'AsyncIOMotorCursor' object is not iterable Что делать?
Viktar
Курсор не может быть вызван асинхронно
Danil
Попробуй await list()
Такую же ошибку вывело
Danil
Ладно, а можно ли как-то реализовать в монгодб вот это из sqlite for top in q.execute("SELECT username, balance FROM users ORDER BY balance DESC LIMIT 10"): Это выводит таблицу лидеров, но я не знаю, можно ли это сделать в mongodb?
Anton
Да, я тупанул, не заметил что все ок с этим
Anton
А не знаете кстати как в MongoDB проверять что updateOne() сработал? Раньше можно было поле .n и .ok в объекте результата. А сейчас какие-то .modifedCount добавили а те убрали
Anonymous
https://docs.mongodb.com/manual/reference/method/ObjectId/ Не часто, но в моем случае - когда по objectId пытались собирать точки полигона это было неприемлемо.
Anonymous
Да, objid генерит драйвер клиента.
Anonymous
в robo3t нужно заполнить форму с ssh при этом учти, что робо3т не умеет работать со скрытыми директориями работать (таковым является .ssh/ где хранятся твои ключи) нужно приватник ssh скопипастить в публичную директорию (например ssh/) и указать файл по тому пути робо3т З.ы. проблема по описанию не с монгой а с подключением к серверу вариант 2й: ssh тунелирование(port forwarding) можно пробросить порт монги на локальную машину и подключаться к ней ssh -L 27018:localhost:27017 YOUR_USERNAME@REMOTE_IP YOUR_USERNAME и REMOTE_IP замени на свои а параметр -L 27018:localhost:27017 указывает что нужно 27017 порт(монги) из удаленной машины пробросить на локальную машину в порт 27018 и после этого клиенту когда будет цепляться к монге нужно указать 27018 порт думаю поможет)
Спасибо! Подключение по ssh просто через пароль к серверу, в форму сделано Если бы проблема была не с монгой,а с подключением к серверу, то на него и зайти было бы нельзя, я думаю.. А, может, порт 27017 закрыт наружу и от этого вся фигня, кстати?
Maksym
Скажите, а чтобы выполнить например такую команду, где файл test.js должен лежать?
Maksym
просто в любом месте?
Maksym
да я не про это, но я уже вроде понял
Maksym
я пытаюсь запустить на выполнение файл, но мне выдает ошибки, может кто-то помочь с этим? (тут ссылка на подключение к бд) Implicit session: session { "id" : UUID("e6de5949-4d77-4115-9fbb-5b00b10f25f7") } MongoDB server version: 4.4.10 WARNING: shell and server versions do not match WARNING: db.eval is deprecated uncaught exception: Error: { "ok" : 0, "errmsg" : "CMD_NOT_ALLOWED: $eval", "code" : 8000, "codeName" : "AtlasError" } : _getErrorWithCode@src/mongo/shell/utils.js:25:13 DB.prototype.eval@src/mongo/shell/db.js:607:15 @test.js:5:7 @(shell):1:1 Error: error loading js file: test.js : @(shell):1:1
Anonymous
это монго дб
Anonymous
это монго дб
Извиняюсь
Maksym
как это сделатЬ?
Maksym
любую процедуру
Maksym
вывода количества записей в коллекции например
🏳️‍🌈Сель
Как можно переименовать коллекцию? Ну, или хотябы все документы перенести в другую...
Булат
Добрый вечер! Подскажите пожалуйста, почему может не срабатывать $cond ? В коллекцию записывается сам объект $cond client .db("ds") .collection("offers") .updateOne( item, { $set: { status: { $cond: [ { $eq: ["$price", item.price] }, Status.REST, Status.UPDATED, ], }, }, }, { upsert: true }, );
Булат
Можно ли вообще использовать $cond в updateOne ?