Vladimir
$in [statuses]
Можно подробнее?
dnacd 🦜
Можно подробнее?
https://www.mongodb.com/docs/manual/reference/operator/query/in/
Vladimir
Спасибо!
Artur
Добрый день, как могу написать paseInt() функцию внутри aggregation
Nick
Добрый день, как могу написать paseInt() функцию внутри aggregation
https://www.mongodb.com/docs/manual/reference/operator/aggregation/toInt/
Eva🇺🇦
Как юзать курсор? Следующий код выдает ошибку: const filePath = path.join(config.tmpPath, `${projectId}-testrts.json`); const cursor = User.find(query).cursor({ batchSize: 500 }).pipe(fs.createWriteStream(filePath)); console.log(filePath); /Users/a1111/Documents/projects/myp/packages/common/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js:198 const err = new MongooseError(message); ^ MongooseError: Operation user.find.find() buffering timed out after 10000ms at Timeout.<anonymous> (/Users/a1111/Documents/projects/myp/packages/common/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js:198:23) at listOnTimeout (node:internal/timers:557:17) at processTimers (node:internal/timers:500:7)
Eva🇺🇦
mongoose $match работает только сущностями ObjectId? Не могу именно стрингу айдишку передать
Cloud
ага
Nick
mongoose $match работает только сущностями ObjectId? Не могу именно стрингу айдишку передать
зависит от схемы и по какому полю идет выборка, если вы про стандартный _id не переопределенный в схеме, то да там через ObjectId, но в целом может быть и стринга - как сделаете
Anonymous
Ребят, подскажите по авторизации Создала такого юзера, хочу подключиться, но получается только если в URI нет конкретной базы т.е mongodb://username:pwd@localhost проходит, а mongodb://username:pwd@localhost/db-name нет
Anonymous
Роль же стоит readWriteAnyDatabase, юзер же ведь должен иметь доступ ко всем базам
Валерий
подскажите как в потоке агрегации получить имя текущей коллекции
Валерий
или как сделать $merge в текущую коллекцию
Nick
подскажите как в потоке агрегации получить имя текущей коллекции
нет такой возможности, просто указываете как параметр подстановки в пайплайне там где вам надо
indicozy
всем привет! я пару дней изучаю MongoDB и думал на нем создать веб-приложение для продакшна, но я честно еще не догнал как на нем строить архитектуру
indicozy
я привык к SQL и не совсем понимаю как работать с BSON и в целом как строить архитектуру памяти, кто нидь может помочь с этим вопросом?
indicozy
можно ли в монго делать Relational Databases как в SQL и в целом стоит ли или стоит делать иной подход?
Артем
можно ли в монго делать Relational Databases как в SQL и в целом стоит ли или стоит делать иной подход?
Тут вроде обсуждается https://www.mongodb.com/developer/article/mongodb-schema-design-best-practices/
indicozy
Спасибо!
indicozy
Artem
Всем привет! Народ, помогите найти ошибку. Есть модель. Есть функции: получение, создание, получение одного по ID, удаление по ID. Есть соответствующиt контроллеры. Есть mapper к объекту. И роуты, конечно. Получается создать объект. Получается найти его по ID. Получается удалить. Не получается получить список. Выбивает ошибку —> Error: Cast to undefined failed for value undefined at path "undefined" <— Где искать ошибку?
Artem
как правило "underfined" в ошибках говорит что идет попытка работать с непроинициализированными переменными. Посмотрите в месте возвникновения ошибки что не упущены инициализация или используются правильные ключи при доступе к полям объектов
Спасибо за отзывчивость! Да, я старался быть внимательным. Мои модели содержат не так много полей и я все равно их переписывал, чтоб устранить проблему. Есть предположение, что ошибка в сервисах этих моделей, но они аналогичные. Модель HomePost - работает без ошибок, а Soldier и Valor - работают с ошибкой при получении списка. Если вас не затруднит посмотреть мой код - буду очень признательным. GitHub: —> https://github.com/atreiko/battalion/tree/main/server <—
Антон
подскажите пожалуйста, а можно ли на mongodb драйвере в nodejs сделать create_at и update_at, при операции bulkWrite updateOne? чтобы если вставилось обновило update_at
Nikolay
подскажите пожалуйста, а можно ли на mongodb драйвере в nodejs сделать create_at и update_at, при операции bulkWrite updateOne? чтобы если вставилось обновило update_at
В самом драйвере такой возможности нет, но можно же написать обертку для метода, где по дефолту будут обновляться эти поля, и апдейтить через нее
Vladimir
Добрый день! У меня есть запрос в БД для поиска документа и получения с него определённых элементов с массива док-та Я делаю запрос в массив users: [] И хочу получать те элементы , у которых в объекте data массива users поле status helper или admin Но с elemMatch возвращает только 1 элемент, хотя их там 2 let eventarr = await event.find({ id }, { status: true, users: { $elemmatch: { "data.status": { $in: ["helper", "admin" ] } } }, });
winterfall
Это объект ? Не может быть такого, что в объекте Event нет тех полей, которые ожидаются ?
Sheff
Привет, подскажите как сделать чтобы в выборке с бд не было строки _id ?
Sheff
спасибо)
Cloud
в проджекш передай _id: 0
Андрей
Здравствуйте Как в монге заблочить документ? Чтоб, если кто-то его редактирует (в эту секунду или миллисекунду), то другие не могли. Возможно ли это реализовать на node js?
Андрей
В общем, у меня на документ ставится метка (ид юзера) Но когда 2 юзера одновременно отправляют find, затем update, то оба могут поставить эту метку Каждый свою Т.к когда шлют find, то документ свободен у обоих
Андрей
а не должны? и что должно происходить с тем кто опоздал?
Он должен не найти этот документ, т.к документы с меткой не отображаются
Андрей
Но он успевает его вытащить, как и первый
Андрей
А первый не успевает занять
Андрей
Вот такая проблема
dnacd 🦜
Он должен не найти этот документ, т.к документы с меткой не отображаются
так метка ставится по факту обновления, а не перед
Kino Recovery
Добрый вечер можно курс молодого бойца после постгреса, мне надо загрузить каталог товаров в монгу запушит, в основном select будет всех товаров,поэтому было принято решение сериализовать и запушить один раз + иногда делать выборку по фильтру доступности. Отсюда вопрос грузить каталог одним документом или 1 товар 1 документ?
Nick
нерешаемая задача
точнее оба увидят документ, т.к. это событие происходит до появления метки. Второму можно только запретить поставить ее еще раз
dnacd 🦜
все товары в одной коллекции
Андрей
так метка ставится по факту обновления, а не перед
Ну да. Сначала отправляю find, затем update. Пока 1 находит и готовится отправить update, то 2 успевает отправить find т.е найти этот документ и так же отправляет update
Nick
А как?
проверкой условия или транзакцией
Kino Recovery
Андрей
Мне наверное проще выкинуть эти документы в отдельную коллекцию И вместо find + update делать delete У второго просто выбьет ошибку
Андрей
Или это глупо?)
dnacd 🦜
Да, поэтому сюда пишу
а задача то какая, не совсем понятно для чего тебе это
Андрей
а задача то какая, не совсем понятно для чего тебе это
Есть документ, к нему нужно присвоить юзера. Но дело в том, что оба юзера могут увидеть этот документ, если одновременно нажмут на поиск, и оба его займут Должно быть так: если один нашёл и занял, то второй получил ошибку
Андрей
у тебя есть какой-то флаг на документе для этого?
Да. Флаг user_id, дефолтно он равен null Или я неправильно понял
dnacd 🦜
Да. Флаг user_id, дефолтно он равен null Или я неправильно понял
ну так проверяй его перед апдейтом, если он есть, делай что хочешь, в чём проблема?
Андрей
ну так проверяй его перед апдейтом, если он есть, делай что хочешь, в чём проблема?
Проблема в том, что если вызвать findOne у обоих одновременно, то они оба найдут этот документ. Тот, кто первый его найдёт, не успеет обновить поле user_id на свое и поэтому второй так же увидит этот документ
Андрей
Пока у 1 выполняется find, 2 тоже может его выполнить, потому что 1 не успел отправить update
Андрей
Вот так лучше
Сергей
Ребят, подскажите как называется операция при которой я изменяю уже существующую базу данных? Например мне нужно во всех записях изменить тип данных Или поменять структуру данных?
dnacd 🦜
Пока у 1 выполняется find, 2 тоже может его выполнить, потому что 1 не успел отправить update
понятное дело, тебе нужно обновить флаг, что бы второму юзеру отфильтровать этот документ. ты не можешь заблочить этот документ до обновления, можешь сделать запрос на обновление, и добавить ещё один флаг, хз юзер посылает запрос на обновление, статус документа меняется на True и другим юзерам его отсеиваешь
Андрей
Более норм способа нет?
Андрей
а код там зачем всрался
Ты сам сказал про ещё один флаг, вот я про это
dnacd 🦜
Ты сам сказал про ещё один флаг, вот я про это
обычное булеан значение, зачем код юзер находит запись, отправляет запрос на обновление, для последующего поиска документ будет отфильтрован но вопрос как быть, если он не обновит :0
dnacd 🦜
Ты сам сказал про ещё один флаг, вот я про это
либо сразу при запросе добавляй user_id документу. а потом уже пускай апдейтит что ему надо
dnacd 🦜
Всм
ну смотри 1 юзер находит документ, и посылает запрос на его обновление у документа сразу обновляется поле user_id 2 юзер в эту секунду так же нашёл документ, и пытается послать запрос на обновление, тут можно обработать исключение, и вернуть юзеру мол сорян, так и так документ занят) всем последующим юзера этот документ вовсе не покажется, т.к. у него уже есть user_id а у первого юзера теперь может быть много времени для обновления документа Но на самом деле, я не знаю твоей задачи, может ты вообще херню какую-то придумал и я тоже :D
Сергей
вы наверное про миграцию
Видимо да Подскажете какие есть инструменты для этого?
Nick
Видимо да Подскажете какие есть инструменты для этого?
из инструментов особо ничего такого не знаю, обычно проще скриптами - как правило всеравно приходится контролировать и валидировать результат выполнения и отдать на откуп системам миграции далеко не всегда можно