Sarvar
Как лучше организовать подключение если у меня много запросов (1 млн пользователей)
Alexander
Nick
Привет! У меня такая проблема как исправить? MongoDb на платном тарифе
а база сама доступна извне? а то на атласе надо открывать доступ
Kerill
Привет всем Подскажите, можно ли как-то фильтровать populated поля после метода populated, но перед методами skip\limit...?
Cloud
агрегацией
Р00-👨🏻‍💻Михаил
Товарищи Каков обходной путь pipeline в $lookup если такого параметра нет в 3.4.1?
Р00-👨🏻‍💻Михаил
нужно сделать $match
Р00-👨🏻‍💻Михаил
В документах есть date внутри $lookup дается массив документов с полем date Нужно получить только документы позже чем родительский date
Nick
а
Nick
вы хотите навесить условие на связываемые по лукапую доки
Р00-👨🏻‍💻Михаил
есть коллекция messages есть коллекция sales message.date и нужно получить sales у которых date после message.date но при этом монга 3.4.1
Р00-👨🏻‍💻Михаил
Я вроде видел $graphLookup под эти цели но не понимаю что писать в startWith
Nick
нормально - никак, не нормально - сделать лукап и потом отфильтровать лишнее из поулченного массива
Р00-👨🏻‍💻Михаил
‘sales.date’: {$gte: ‘$date’} так матчить?
Р00-👨🏻‍💻Михаил
Превышается лимит времени на запрос
Р00-👨🏻‍💻Михаил
оттестить даже в компасе не могу на 20 документах
Nick
‘sales.date’: {$gte: ‘$date’} так матчить?
да https://docs.mongodb.com/manual/reference/operator/aggregation/filter/
Р00-👨🏻‍💻Михаил
А, через фильтр
Nick
ну или наконец обновиться
Р00-👨🏻‍💻Михаил
{ hasSale: {} } Как сделать $project в котором проверять что есть поле в документе?
Р00-👨🏻‍💻Михаил
Вот такой набор документов
Р00-👨🏻‍💻Михаил
Ура я смог
Р00-👨🏻‍💻Михаил
Спасибо милчеловек за наводки
Ігор
Привет, а можно как-то получить обьект из коллекции с самым большим значением свойства
Ігор
Хочу получить обьект с самым большим айди, или может последний обьект?
Azgat
Добрый день. Есть вопрос. Можно ли как то ускорить аггрегацию? Она довольно простая, вот только коллекция большая 60кк+. Например, посчитать среднюю цену. categoriesIds есть индекс. Кол-во продуктов в этой категории около 500к. И время выполнения от 9 до 60+ сек или это нормально? db.getCollection('products').aggregate([ {$match: { "categoriesIds": 16500, }}, {$group: { "_id": null, avgPrice: {$avg: '$price'} }} ])
yopp
Всем привет! К сожалению случилась катастрофа. У нас профессиональное сообщество и здесь не место для политики. В твиттере я опубликовал длинный тред о том, к чему, вероятно, стоит готовиться с точки зрения айтишной инфраструктуры. https://twitter.com/y8/status/1496550750750707720 Я сейчас соберу её в кучу и опубликую на канале. Пожалуйста, найдите пару минут и просканируйте её хотяб по диагонали и сделайте ретвит.
Null
В связи с войной, коротко расскажу куда смотреть чтоб подложить соломку если у вашей компании есть айтишная инфраструктура. Копии: - https://twitter.com/y8/status/1496550750750707720 - https://t.me/MongoDBRussian/11 - https://gist.github.com/y8/e277f1f2e819d66b9dda4a5f9a157741 - https://ipfs.io/ipfs/QmPGLsSwywtkYM63tYANTirYCndzBmGx1xDszHzqWEtQQr?filename=playbook.md Задача: дать задуматься о «а что если». Грубо очертить сценарии, последствия и в какую сторону думать. Почему? На Россию уже накладывают новые санкции из-за войны на Украине. Обещали что не зацепят непричастных, уже звучат призывы то запретить туризм, то перестать экспортировать в РФ технику. Так что платить за войну будем мы. О чём речь? Санкции планируют наложить и на рынок IT. А в 2022 году любой бизнес использует ИТ продукты, даже если кажется что нет. Нужно быть готовым что продукты перестанут работать, не важно почему и как именно. Что может случится? На мой взгляд, самое важное: 1) Блокировки сервисов в РФ 2) Зарубежом перестанут работать с компаниями/людьми из РФ 3) RU-сегмент интернета будет изолирован от мира 4) Ограничат или запретят экспорт технологий в РФ Какие последствия? Первые три пункта сводятся к недоступности облачных сервисов. Выход один: найти альтернативу на российском рынке, которая не зависит от зарубежных партнёров. Список сервисов и альтернатив будет в конце треда. «Ответные» блокировки и отказы от работы с клиентами из РФ, к сожалению, практически гарантированы. Но это самый мягкий сценарий: всех и сразу не заблокируют и не отключат, по этому страдать будут только отдельные части бизнеса. Происходить это будет почти без предупреждения, время на реакцию будет ограничено. Изоляция рунета — мгновенная катастрофа. Тут есть ещё одна хорошая плохая новость: закон о суверенном рунете скорее работает, чем не работает. С ним всё плохо, всё сломается, но через неделю, со скрипом, кое-как заработает Отмечу что «всё» — не преувеличение. Те компании что участвовали в стресс-тестах РКН (если они реально были) оклемаются быстрее, остальные медленнее. Хуже всех будет конечным пользователям. Мне кажется менее вероятным что трансграничный трафик отрежут зарубежные провайдеры, причём одномоментно, это технически довольно сложно и требует координации огромного числа участников, включая Китай. А вот принять очередной закон и включить великий русский файрволл для борьбы с «проектом ЦРУ» довольно легко. Почти у всех провайдеров/операторов уже стоит чёрная коробочка, через которую идёт *весь* трафик. Так РКН переодически уже ломает нам интернет. Вся надежда только на некомпетентность и на то что больно будет абсолютно всем, включая окологосударственный бизнес. Но ломать не строить, а терпит даже глава внешней разведки, что уж там про остальных говорить. Запрет экспорта — отложенная катастрофа. У РФ нет инфраструктуры для производства вычислительного оборудования. Пара заводов со старыми процессами которые делают чипы для карточек метро. Ещё есть «отвёрточная» сборка, но компоненты все импортные. В случае худшего сценария с запретом на экспорт всего содержащего технологии разработанные в Америке, в РФ ничего нельзя будет ввезти: любое устройство содержит что-то сделанное в Америке. Уверен, технику будут возить как сыр, но и цены будут заоблачные. И сыр ещё можно начать производить внутри страны, а вот создать с нуля индустрию производства полупроводников абсолютно никак нельзя. Что делать? 0) Узнайте у руководства есть ли план. Если нет, предложите составить. Даже плохой плана убирает страх неизвестности, что позволяет не паниковать. Отсутствие паники позволяет не совершать грубых ошибок. Быть хладнокровным очень важно. 1) Проверить что вы можете связаться с сотрудниками/контрагентами/ключевыми клиентами/ по обычному или мобильному телефону. Назначьте ответственных и раздайте их номера всем сотрудникам, чтоб они знали куда звонить если что.
Null
2) Составить план, что делать если вам или вы не сможете платить зарубеж. Это особенно важно для удалёнщиков работающих с иностранными компаниями. Связаться с зарубежными контрагентами/поставщиками услуг и обсудить как работать если будет блокировка/запрет на работу с РФ. Если платят вам, просить авансы побольше, если платите вы, попросить платить авансы поменьше. 3) Провести стресс-тесты. Взять одно рабочее место, отключите от интернета и пробуйте работать. Если можете фильтровать трафик, то xtables-addons-common + geoip и разрешите только российский трафик. Запишите что сломалось, повторяйте на всех отделах, начиная с самых важных (руководство, бухгалтерия, фронтофисы/продажи, склады) 4) Составить инвентарь сервисов и ПО: что, как используется, как критично, где расположено, альтернативы, какие там данные, сколько займёт миграция, можно ли их восстановить без доступа, сколько займёт времени. 5) Посчитать сколько стоит простой, сколько продублировать сервисы прямо сейчас. Возможно перестраховаться сейчас будет стоить небольших денег. Прямо сейчас переводить туда сотрудников нет смысла. Хватит убедится что сервис «холодный» и когда потребуется, можно быстро всех перевести: есть критичные для работы данные, пусть не самые актуальные, готовы учётные записи, написана короткая инструкция как работать. Теперь список популярных сервисов по отраслям. В комментариях пишите что пропустил, возможные альтернативы и как можно экспортировать/импортировать данные. Торговля: Shopify, Magento, Wix/Tilda/Wordpress E-commerce, Etsy, Ebay. Посмотрите на Битрикс24/Insales/Авито. Экспортируйте витрины, заказы, клиентов Мессенджеры: Slack, Discord, телега, WhatsApp, Viber, WeChat, Snapchat. Заведите Я.Мессенджер/ICQ, проверьте что в компании его знают. Раздайте список тел. номеров, куда звонить/писать смс если основные каналы связи не работают. У многих нет мобильных номеров коллег, только юзернеймы. Экспортируйте контакты, переписку Почта: gmail, live.com, exchange, iCloud, Zoho Mail, ProtonMail. Если в почте есть важное, сделайте локальную копию. У яндекса и mail.ru есть почта для доменов. Ещё можно поднять собственный сервер. Соцсети: твиттер, youtube, fb, инста, tiktok, twich, pinterest, телеграм. Время делать страничку на VK/Одноклассниках/Рутубе. Добавьте новые ссылки в существующих соцсетях, на сайте, в следующую email рассылку. Запросите копию данных Почтовые рассылки: Mailchimp, Mailgun, Sendgrid, Amazon SES, Substack, ActiveCampaign, Sendblue. Экспортируйте адреса. Заменить можно на Unisender, Mail365 CRM: Saleforce, HubSpot, Zoho, Zendesk CRM, Pipedrive. Опять-же Битрикс, amoCRM, Мегаплан. Экспортируйте клиентов Заявки/Поддержка клиентов: Zendesk, Zoho, Freshdesk, Intercom, Front, Jivo, HubSpot. Экспортируйте клиентов Домены вне российских зон ru/рф/su. Купите ru/рф домен, расскажите о нём клиентам. Делаете софт? Встройте фоллбэк на домен в .ru зоне DNS: Cloudflare, Amazon Route 53, Dyn, Azure DNS, DigitalOcean DNS, Akamai Edge Облачные/железные провайдеры: Amazon Web Services, Google Cloud, Azure, Digital Ocean, Hetzner, OVH, IBM Cloud, Oracle Cloud, Linode. Локальные альтернативы: Я.Облако, VK Cloud Solutions, Selectel, CloudMTS. Оцените как быстро вы можете разворачивать реплики ваших сервисов. Файловые хостинги: Dropbox, Google Drive, OneDrive, iCloud Drive, Amazon S3/Drive, Wasabi, Backblaze, Box.com. Кроме Я.Диска и Облака mail.ru, никого не знаю. Пишите в комментариях. Сделайте локальные копии содержимого. Особенно резервных копий.
Anonymous
Привет, как обновить все вложенные документы? Так не работает. db.collection("orders").updateMany({"orders.address": {$exists: false} }, { $set: { "orders.address": '', "orders.organization": '' } });
behran
behran
не робит(
https://docs.mongodb.com/manual/reference/operator/update/positional-all/ Должно работать, с версии 3.6
Anonymous
у меня 5
NO WAR!
Всем привет. Была проблема. По findOne Монго отдавало объект, в котором были пары ключ-значение и еще один вложенный объект. JS спокойно получал значения ключей, а про вложенный объект говорил что он undefined. Победил проблему, добавив к findOne lean, но остался вопрос. Это был глюк монго или фича такая? Если фича, то где можно про это почитать? Как я могу заранее знать, что мне нужно добавить .lean?
NO WAR!
Такое происходит когда неверно схему создаешь
Неверно в смысле неверной организации структуры?
NO WAR!
Да
Понятно. Просто я не создаю схемы как таковой. Использую strict false и просто записываю объект, полученный из апи. Значит в объекте, полученном от апи что-то неверно организовано?
Anonymous
Я с таким сталкивался в монгусе
Anonymous
Если у тебя не он, не подскажу
NO WAR!
Я с таким сталкивался в монгусе
Mongoose На скрине вложенный объект, который он не хотел доставать. Вроде простенький. Даже не знаю где здесь может быть ошибка.
Anonymous
Схему покажи
Anonymous
Так а задать её не надо?
NO WAR!
Так а задать её не надо?
Нужно если хочешь прописать строгую схему. А если не хочешь, то и так можно.
Физик-ядерщик
Всем привет, VS Code страшно тормозит из-за mongoose с типами, при удалении index.d.ts из библиотеки всё ок, кто-то сталкивался с этим ещё?
Морозов
Привет. Как создать индекс с текущем временем lastModified: "$$NOW"?
Nick
Привет. Как создать индекс с текущем временем lastModified: "$$NOW"?
просто индекс создать или что? не ясен вопрос
Морозов
Морозов
https://docs.mongodb.com/manual/reference/operator/update/currentDate/
Морозов
.insertOne(date: "$$CLUSTER_TIME") так и создает date: "$$CLUSTER_TIME"
Морозов
Еще есть опции, которые мне нужны. Но такая база не дает добавлять данные.
Nick
а что надо то?
Nick
с бизнес точки зрения
Морозов
Я хочу, чтобы при добавлении новых данных добавлялась строка в колонке "текущее время"
Anonymous
Таймстемп чтоле
Морозов
Да. Как в airtable
Nick
Я хочу, чтобы при добавлении новых данных добавлялась строка в колонке "текущее время"
при инсерте надо явно указывать время извне, т.е. засетапить lastModified как new Date() или аналог, при обновлениях использовать синтаксис который вы выше использовали с $currentDate
Nick
Nick
а эта страница про использование апдейтов с агрегациями
Морозов
не вижу упоминаний индексов
Хорошо, пусть без индексов. Из mongosh не работает. date: "$$CLUSTER_TIME"
Морозов
а эта страница про использование апдейтов с агрегациями
Я применил вместо update insertOne. Это в данном случае одно и тоже.
Nick
Я применил вместо update insertOne. Это в данном случае одно и тоже.
не одно и то же, на инсертах нельзя обратиться к переменный агрегаций в частности $$CLUSTER_TIME
Nick
агрегации используются для выборок
Морозов
агрегации используются для выборок
Я что должен сам время генерировать?
Nick
Я что должен сам время генерировать?
на вставках - да, можно конечно через upsert это провернуть, но это далеко не всегда реализуемо
Nick
Как с этим быть?
использовать
Морозов
использовать
У Вас есть опыт использования?