Koliy82
Ошибку
Koliy82
А на праймари rs.status() что говорит о сервере на который переезжаешь?
Спасибо, думал прав нет, а просто healthcheck не вызвал rs.initiate Написал в mongoshell инициализацию и заработало
Нуриддин
Рад помочь
Brunello
Напишите пожалуйста подробнее, я не понял вас.
он говорит надо сначала техническое задание понять, а потом из него исходить и готовить реализацию
Norim
он говорит надо сначала техническое задание понять, а потом из него исходить и готовить реализацию
Есть 2 задачи которые я хочу решить: 1) Синхронизация данных у одного пользователя на 2х устройствах. 2) Синхронизация между группой пользователей тех данных, которыми они решили поделиться со всей группой. Естественно там должен быть админ, который приглашает и удаляет и сам пользователь должен быть способен решить выйти из группы.
Not Mascara
chatgpt?
Он считает что все нормально с этой агрегацией
Semyon V
я так пока, пальцем в небо. не вникал сам
Нуриддин
я так пока, пальцем в небо. не вникал сам
Лучше прочитать доки по этому поводу, ведь задачу лучше всего понимает лишь заказчик и обладатель ТЗ( в идеальном случае)
Нуриддин
По вашему запросу не совсем понятно как устроены данные и их характер + ваши требования в виде тестовых данных (проверка качества запроса). Очень много факторов на которые можете ответить только вы, но если прочитаете и вникните в ТЗ и документацию к инструменту
Not Mascara
По вашему запросу не совсем понятно как устроены данные и их характер + ваши требования в виде тестовых данных (проверка качества запроса). Очень много факторов на которые можете ответить только вы, но если прочитаете и вникните в ТЗ и документацию к инструменту
Есть документ А вида { "_id": {}, "name": "name1" } Есть документ B вида { "_id": {}, "object1": { "object2": { "array": ["name1, "not_name"] } } } Нужно сделать агрегацию B к A по name1 Как-то так
𝔏𝔢𝔯𝔬𝔶
Есть документ А вида { "_id": {}, "name": "name1" } Есть документ B вида { "_id": {}, "object1": { "object2": { "array": ["name1, "not_name"] } } } Нужно сделать агрегацию B к A по name1 Как-то так
db.collectionA.aggregate([ { $lookup: { from: "collectionB", let: { nameVar: "$name" }, pipeline: [ { $unwind: "$object1.object2.array" }, { $match: { $expr: { $eq: ["$object1.object2.array", "$$nameVar"] } } } ], as: "matchedDocs" } }, { $match: { "matchedDocs.0": { $exists: true } } ])
Not Mascara
Попробую конечно, спасибо
𝔏𝔢𝔯𝔬𝔶
db.collectionA.aggregate([ { $lookup: { from: "collectionB", let: { nameVar: "$name" }, pipeline: [ { $addFields: { "filteredArray": { $filter: { input: "$object1.object2.array", as: "item", cond: { $eq: ["$$item", "$$nameVar"] } } } } }, { $match: { "filteredArray.0": { $exists: true } } } ], as: "matchedDocs" } }, { $match: { "matchedDocs.0": { $exists: true } } } ])
hᥙ᥉᥉ᥱᎥꪀ 𓅞
database : Database Intialised Traceback (most recent call last): File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 31, in <module> start(fakepyfile,mainpyfile) File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 30, in start exec(open(mainpyfile).read(), main.dict) File "<string>", line 15, in <module> File "/storage/emulated/0/New folder/database/init.py", line 9, in <module> DB = Mongo(MONGO_URL) File "/storage/emulated/0/New folder/database/mongo.py", line 6, in init self.mongo = AsyncIOMotorClient(url) File "/data/user/0/ru.iiec.pydroid3/files/arm-linux-androideabi/lib/python3.9/site-packages/motor/core.py", line 163, in init delegate = self.delegate_class(*args, **kwargs) File "/data/user/0/ru.iiec.pydroid3/files/arm-linux-androideabi/lib/python3.9/site-packages/pymongo/mongo_client.py", line 771, in init res = uri_parser.parse_uri( File "/data/user/0/ru.iiec.pydroid3/files/arm-linux-androideabi/lib/python3.9/site-packages/pymongo/uri_parser.py", line 558, in parse_uri nodes = dns_resolver.get_hosts() File "/data/user/0/ru.iiec.pydroid3/files/arm-linux-androideabi/lib/python3.9/site-packages/pymongo/srv_resolver.py", line 131, in get_hosts _, nodes = self._get_srv_response_and_hosts(True) File "/data/user/0/ru.iiec.pydroid3/files/arm-linux-androideabi/lib/python3.9/site-packages/pymongo/srv_resolver.py", line 111, in _get_srv_response_and_hosts results = self._resolve_uri(encapsulate_errors) File "/data/user/0/ru.iiec.pydroid3/files/arm-linux-androideabi/lib/python3.9/site-packages/pymongo/srv_resolver.py", line 105, in _resolve_uri raise ConfigurationError(str(exc)) from None pymongo.errors.ConfigurationError: cannot open /etc/resolv.conf [Program finished]
hᥙ᥉᥉ᥱᎥꪀ 𓅞
database : Database Intialised Traceback (most recent call last): File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 31, in <module> start(fakepyfile,mainpyfile) File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 30, in start exec(open(mainpyfile).read(), main.dict) File "<string>", line 15, in <module> File "/storage/emulated/0/New folder/database/init.py", line 9, in <module> DB = Mongo(MONGO_URL) File "/storage/emulated/0/New folder/database/mongo.py", line 6, in init self.mongo = AsyncIOMotorClient(url) File "/data/user/0/ru.iiec.pydroid3/files/arm-linux-androideabi/lib/python3.9/site-packages/motor/core.py", line 163, in init delegate = self.delegate_class(*args, **kwargs) File "/data/user/0/ru.iiec.pydroid3/files/arm-linux-androideabi/lib/python3.9/site-packages/pymongo/mongo_client.py", line 771, in init res = uri_parser.parse_uri( File "/data/user/0/ru.iiec.pydroid3/files/arm-linux-androideabi/lib/python3.9/site-packages/pymongo/uri_parser.py", line 558, in parse_uri nodes = dns_resolver.get_hosts() File "/data/user/0/ru.iiec.pydroid3/files/arm-linux-androideabi/lib/python3.9/site-packages/pymongo/srv_resolver.py", line 131, in get_hosts _, nodes = self._get_srv_response_and_hosts(True) File "/data/user/0/ru.iiec.pydroid3/files/arm-linux-androideabi/lib/python3.9/site-packages/pymongo/srv_resolver.py", line 111, in _get_srv_response_and_hosts results = self._resolve_uri(encapsulate_errors) File "/data/user/0/ru.iiec.pydroid3/files/arm-linux-androideabi/lib/python3.9/site-packages/pymongo/srv_resolver.py", line 105, in _resolve_uri raise ConfigurationError(str(exc)) from None pymongo.errors.ConfigurationError: cannot open /etc/resolv.conf [Program finished]
@dd_bb @pragus
Norim
Как остановить синхронизацию данных пользователя с Атласом на неопределенное время? Realm
Norim
Например пользователь может разлогиниться или у него может закончиться оплачиваемый период. Или он может еще и не начаться.
Norim
https://www.mongodb.com/docs/realm/sdk/java/sync/pause-resume-sync/#pause-or-resume-a-sync-session---java-sdk В документации пишут, что вручную останавливать синхронизацию на долгое время не стоит. Как мне тогда решить все это дело? Мне каждый раз когда пользователь логиниться-разлогиниться копировать его данные из одной бд в другую?
Cooman
Ребят, всем привет, подскажите пожалуйста а можно ли как-то удаленно подключаться к бд mongo через windows terminal? mongo shell есть, но каждый раз его отдельно запускать не удобно, хотел бы все запускать через windows terminal
Илья
😵
Kvhqm
Тибетские мудрецы, скажите пожалуйста насколько правильно "так" обновлять документ в монге?
Kvhqm
так за 1 операцию можно это сделать
можешь пожалуйста поподробнее?
Cloud
почитай findOneAndUpdate и просто update
Kvhqm
почитай findOneAndUpdate и просто update
так там вроде как нужно конкретное поле указывать, которое нужно обновить. А я не знаю какое поле должно будет обновиться. Точнее я знаю, но не знаю
Kvhqm
по этому и кастыль такой, но который идеально подходит
Cloud
так вроде или точно?
Kvhqm
так вроде или точно?
Та сто пудова. Во вторых, конечно я могу кастыль сверху напилить с ифами и свичами, но на кой чорт ано нужно?
Cooman
Это делается через Command line в новом профиле
отлично, но какие парметры задавать, source что нужно указать чтоб был mongo
Cloud
Та сто пудова. Во вторых, конечно я могу кастыль сверху напилить с ифами и свичами, но на кой чорт ано нужно?
так ты в курсе что ты на скрине документу поля уже существующие перетираешь? и есть более элегантные синтаксические конструкции чем ифы и свичи
Kvhqm
так ты в курсе что ты на скрине документу поля уже существующие перетираешь? и есть более элегантные синтаксические конструкции чем ифы и свичи
Там или приходит старое значение, либо (массив объектов с массивами объектов), либо новое в одном из полей всей этой гениальной структурой, которую я зашаманил по советам тибетского мудреца живущего в интернете
Cloud
и чем это отличается от update или findOneAndUpdate где так же в апдейт все поля можно пихнуть?
Kvhqm
Теперь скажи что может быть лучше чем иф или свич? :)
Kvhqm
не уж то условный оператор? :)
Nick
как сделать можно? подскажите
посмотрел по доке, раньше можно было через eval передать команды, но с текущими тулами надо всегда подключаться в интерактивную сессию либо выполнять скрипт из файла
Nick
Помогите мне пожалуйста
а с чем помогать? првоерить что синк еще работает и ресетнуть синк если уже нет?
Norim
а с чем помогать? првоерить что синк еще работает и ресетнуть синк если уже нет?
Про то как правильно работать с синк, чтобы он работал только тогда когда ему разрешено: у пользователя оплачена прописка и он залогинен. Но и без синк бд должна работать локально.
Norim
это задачи бизнес логики, как распишите так и будет, тут нет правильности
Это же функционал бд я никак не смогу бизнес логикой на него повлиять
Norim
У меня нет доступа к сорс коду бд
Nick
Это же функционал бд я никак не смогу бизнес логикой на него повлиять
почему нету? вы должны включать и выключать синхронизацию. Когда это делать вы принимаете согласно бизнес логике. Значит у вас еще гдето есть инфа о той же оплате. И вы ее гдето храните
Norim
почему нету? вы должны включать и выключать синхронизацию. Когда это делать вы принимаете согласно бизнес логике. Значит у вас еще гдето есть инфа о той же оплате. И вы ее гдето храните
Проблема в том, что её нельзя просто включить и выключить согласно документации поэтому я и спрашиваю если ли способ это делать.
Nick
там же написано
Norim
там же написано
Написано, что это поведение не протестировано и может приводить к неожиданным последствиям. Я воспринимаю это как то, что может перестать работать либо бд либо синхронизация. К тому же как я понимаю на паузу будет поставлена текущая сессия, но при перезапуске начнется новая сессия и значит она уже не будет на паузе?
Norim
открываем соседние разделы обработки ошибок и восстановления состояния
Там написано, что нужно удалить всю бд и заново её создать. Это точно хорошая практика?
Norim
главное учесть это в бизнес прцоессе
Мало того для гибкой синхронизации пишет тоже самое: если вы не синхронизировали эту модель, но записали её - сервер отменит эту запись у вас на устройстве. Как с этим справиться?
Nick
Мало того для гибкой синхронизации пишет тоже самое: если вы не синхронизировали эту модель, но записали её - сервер отменит эту запись у вас на устройстве. Как с этим справиться?
ровно также - описываете прцоессно что должно происходить с бизнес точки зрения в такой ситуации, потом реализовываете. Если это недопустимо - вы выбрали неверный инстурмент
Nick
Пользователь потеряет данные 🤷‍♂️
не вижу проблемы, если это допустимо по бизнес процессу и потом можно восстановить работу
Norim
Поэтому у меня и вопрос: как работать с синхронизацией, чтобы данные не потерялись?
Nick
Поэтому у меня и вопрос: как работать с синхронизацией, чтобы данные не потерялись?
никак, синхронизация она не про "не потерю" данных, а про удобство доставки изменений
Nick
если вам надо гарантии хранения данных, то надо либо выбирать соответствующее решение, либо выносить этот вопрос на уровень кода и проработки проблемных ситуаций в виде процессов
Nick
если что я имею в виду гарантии хранения на устройстве
Norim
никак, синхронизация она не про "не потерю" данных, а про удобство доставки изменений
То есть в реале нельзя и хранить локально и синхронизировать? На интервью у котлина, они говорили, что у них офлайн фёрст база данных. Не сходится.
Norim
можно, но гарантии в оффлане никто никогда не даст
Офлайн фёрст и значит гарантию сохранности данных офлайн.
Nick
Офлайн фёрст и значит гарантию сохранности данных офлайн.
и минимум десяток "если" и "при обеспечении"
Nick
банальное - если пользователь своими руками не удалил файлы
Nick
остальное по индукции
Norim
банальное - если пользователь своими руками не удалил файлы
Но это же не относится к случаю о котором писал я: сервер отменяет локальную запись обратным запросом.
Norim
Давайте говорить более конкретно
Nick
просто для меня слово "гарантии" значит видимо нечно большее чем для вас
Nick
Но это же не относится к случаю о котором писал я: сервер отменяет локальную запись обратным запросом.
чтобы такое произошло ваш приклад должен принять решение о дропе локальной базы и выкачивании ее с сервера. Значит вы определили критерии когда такое допустимо и учли что то что было в локальном хранилище уже не имеет значения.