Artem
[[String, ...], ...]
это лежать будет в каждом документе коллекции
Nick
брать первый (0) и удалять
если поиск по самим эеменатм не нужен, то да просто двумерный массив берите
Али
Может кто-нибудь простыми словами рассказать про миграцию схем? шо это и с чем едят
Nick
Может кто-нибудь простыми словами рассказать про миграцию схем? шо это и с чем едят
Это из мира sql, где у колонок фиксированные типы и всякие ограничения для стабильности. В общем случае в мире nosql не требуется, за редким исключением не готового к изменегиям схемы кода
Али
Спасибо
Nick
Может кто-нибудь простыми словами рассказать про миграцию схем? шо это и с чем едят
вообще миграция схем БД как процесс решает задачу изменения структуры и наполнения БД между релизами софта - добавить таблицы, колонки, настроить индексы и т.п сущности. Туда же относятся заливка справочников, преобразование форматов данных (например сделали новое поле строковое вместо старого числового и нужно перекатить все старые значения в новое поле поменяв тип) и т.п. при хорошем проектировании почти все эти задачи можно решать в отложенном режиме руками админов зачастую без даунтайма. Всякие тулзы по миграции позволяют автоматизировать этот процесс и сделать его одинаковым для всех стендов, но как правило требуют даунтайма (либо ручной запуск опять же админами) на дев среде и при прототипировании миграция вещь абсолютно бесполезная и просто трата времени. При наличии дев-стеджинг-пром стендов уже начинает иметь место быть. С ростом количества стендов/сложности конфигураций/кол-ва разрабов меняющих БД - становится обязательным, но к этому моменту уже и должен быть CI/CD и куча бумажек регламентирующих все это и вопросов о том надо/не надо и как делать уже ни у кого не возникает
Viktar
Всем привет, в коллекции есть строка с урлом вот такого вида "urlPicture" : "../../../../../https@docs.watchsystems.com/pictures/54438/xxxx.jpg" можно ли её в агрегации преобразовать к урлу нормального вида? "urlPicture" : "https://docs.watchsystems.com/pictures/54438/xxxx.jpg"
Viktar
У меня уже есть агрегация, не хочу размазывать логику
Viktar
https://docs.mongodb.com/manual/reference/operator/aggregation/replaceOne/
а если у меня несколько вариантов для замены? `"../../../../../"', `"...."`
Юрий
хочу у документов добавить поле с ид ссылкой на обьект в другой колекции. его лучше как строку сохранять или как ObjectId ? если делать ObjectId то для поиска $in надо будет передавать массив ObjectId. кто как делает? есть какая то еще разница как делать, строками или ObjectId ? ps контроль целостности не требуется.
Nick
@dd_bb под горячую руку не то сообщение попало?
Nick
амнистия)
Al
всем привет. а можно в findOne включить в результат все поля, не перечисляя их, плюс еще одно с его преобразованием
Al
db.contents.findOne({ __type: 'track', pageId: ObjectId("602bd9b512fa32eaa42bd512"), shortName: 'trackB', deletedAt: null}, { media: { $elemMatch: { isCurrent: true, deletedAt: null } } });
Al
вот тут к media добавить остальные поля, не перечисляя их явно
Шох
Всем привет, помогите новичку. Данные(статистики) хранятся в такой моделе. Месяц назад случилось беда и был пропущен один день. Сейчас нужно вручную заполнить один день с данными. Но save(), update() не помогает. Работаю через mongoose
Nick
всем привет. а можно в findOne включить в результат все поля, не перечисляя их, плюс еще одно с его преобразованием
в findOne - нельзя, вам нужно использовать агрегацию и там использовать стейдж $addFields, где будете добавлять новое поле
Al
в findOne - нельзя, вам нужно использовать агрегацию и там использовать стейдж $addFields, где будете добавлять новое поле
а как все остальные выбрать автоматически в агрегации? не перечисляя. можно пример запроса?
Al
https://docs.mongodb.com/manual/reference/operator/aggregation/addFields/
понял там просто не указывается projection и таким образом выбирается все
Nick
все поля документов из монги будут получены как обычно и ничего не надо явно указывать
Al
а для findOne точно нету никакого хака? тк оно все же модель возвращает
Nick
просто не используйте проекцию
Nick
и потом ручками в коде добавляйте поле
Al
просто не используйте проекцию
а она нужна, что бы во вложенном массиве выбрать только определенный объект
Al
или выбрать весь массив и в коде маппить.. но нет массив может быть большой.
Nick
зачем двумя? поулчили данные, в коде их преобразовали к нужному виду, ничего не мешает сделат ьпроекцию и на стороне кода а не в базе
Шох
что значит "не помогают"?
Собираю объект и в конце делаю save() он долго думает и просто сервер перестает отвечать. Думал может я совсем не правильную функцию использую
Nick
Собираю объект и в конце делаю save() он долго думает и просто сервер перестает отвечать. Думал может я совсем не правильную функцию использую
тут по монгусу не подскажу, вообще можете составить json сам по себе и вставить его в базу через какойнить компасс или вообще монгошелл обычным insert
Nick
а это значит выбрать весь вложенный массив зря.
что значит зря? не занимайтесь оптимизациями если у вас нет в этом явных потребностей
Al
что значит зря? не занимайтесь оптимизациями если у вас нет в этом явных потребностей
массив может быть большой. кажется проще перечислить поля или сделать агрегацию
Al
как видите не "проще"
если не сложно обьясните приоритеты? загрузка массива лучше, чем более длинный и трудночитаемый запрос?
Guli
всем привет) может, кто нибудь помочь ?
Guli
record = {'fruit_name': {'apple':{'status':'0'},'banana':{'status':'0'}}}
Guli
я хочу заапдейтить статус, поменять его на 1
Guli
как я могу это сделать
Guli
fruit_information.update({'_id':'xxxx'},{'$set': { 'fruit_name.apple.status':1 }})
Guli
так делала но не пашет, может я что-то не так делаю(
Nick
fruit_information.update({'_id':'xxxx'},{'$set': { 'fruit_name.apple.status':1 }})
0 вместо 1 это опечатка или с 0 так и выполняете?
Guli
опечатка( спасибо)
Nick
тогда проверьте что _id у вас строковый в базе, а не дефолтный ObjectID
Guli
тогда проверьте что _id у вас строковый в базе, а не дефолтный ObjectID
он находит все обьекты по этому айдишнику) или как-то по другому надо сделать?)
Guli
objInstance = ObjectId(id) print(fruit_information.find_one({"_id": objInstance}))
Nick
objInstance = ObjectId(id) print(fruit_information.find_one({"_id": objInstance}))
а при апдейте тоже к ObjectId преобразовываете?
Guli
о кажется, я поняла))
Guli
спасибо большое))
nefertisu
После замены пользователя хочу сделать save , но не понимаю от имени кого его вызывать. Пробовал от юзер коллекшина, но он деприкейтед и не работает Юзаю mongoose
Nick
После замены пользователя хочу сделать save , но не понимаю от имени кого его вызывать. Пробовал от юзер коллекшина, но он деприкейтед и не работает Юзаю mongoose
вы уже сделали реплейс, которй в базу внес нового юзера заместо старого и save не требуется. По самому сейву ему внутрь надо передать объект вроде бы
Nick
репелейс у вас без авейта, а сайв сам по себе ничего не делает
nefertisu
репелейс у вас без авейта, а сайв сам по себе ничего не делает
и ещё одну ошибку нашёл, реплейс ван возвращает нал, а у меня проверка на андейфайнед
nefertisu
ща попробую всё исправить
nefertisu
Исправил, всё работает, но выскакивает данный ворнинг. Я опять же гуглил и говорят поставить useFindAndModify в false, но я не совсем понимаю, это костыль вида отключить ворнинг? Или необходимость для корректной работы
nefertisu
Просто метод deprecated
Да это я и так понял, вопрос то в том что аналогов ему нет даже на оф доке на котору ссылку ворнинг кидает, вместо этого говорят юзать useFindAndModify в false при коннекте, но разве это не костыль и нет аналогов?
Usein
Привет всем, есть одна модель Product, у которой 2 свойства ссылаются на другие модели. Как мне добавить новый документ Product? Мне у тех 2-х ссылок нужно получить ObjectId-s?
nefertisu
у меня есть вот такая схема .Я хочу в каком-то из роутингов добавить элемент в этот массив projects, мне это сделать, потому что вариант на втором скрине не рботает
nefertisu
nefertisu
ну так добавить добавили, а сохранить в БД?
Мне в принципе бьёт 500 ошибку.участок который я кинул выкидывает экзепшин
Nick
логируйте ошибку, разбирайтесь
nefertisu
логируйте ошибку, разбирайтесь
findById возвращает мне объект с названием Query, а я хотел получить именно элемент, что я не так сделал
Viktar
подскажите, что значит эта ошибка в логе монги? unw_get_proc_name(563E978CD7B6): unspecified (general) error:
Usein
Как в монге массив обновить у документа? Массив из ссылок на другие документы*
Antonio
Кто-нибудь может подсказать, возможно ли написать запрос по значению поля объекта в мапе? { "a" : { "1" : { "b" : 111 }, "2" : { "b" : 112 }, "3" : { "b" : 113 } } } Найти все документы, у которых в поле "a" среди значений поля "b" есть значение 112? $elemMatch не работает, так как тут не List<Object>, а Map<String,Object> Пробовал всякого рода find({"a.*.b":112}), но не работает
nefertisu
Скорее всего это у вас Promise, напишите await ProjectManager.findById
и да, спасибо, моя невнимательность и как бы вовзращаемое значение странное
ᅠEmil 🇦🇿
Здравствуйте. Подключил БД (Mongo DB Atlas) к проекту (тг бот). Когда запускаю сервер со своего ноута всё работает хорошо, но при запуске проекта через Heroku бот не отправляет сообщения, в которых берутся или отправляются данные в базу. На Mongo Atlas я разрешил вход всем всем IP адресам