-
sp
-
Ой, не на ту строку посмотрел
sp
у меня есть 2 поля в документе. мне надо их сравнить. не получается
sp
Evgeny
Всем привет. Я новичок в монге, подскажите, пожалуйста, в чём косяк может быть? В MongoDB Compass в фильтре пишу вот такой запрос:
{'date': {$gte: ISODate('17 мая. 2023'),$lte: ISODate('24 июня. 2023')}}
Но возвращаются пустые результаты, хотя такие записи точно есть. Поле date содержит строку типа
date: "18 мая. 2023"
Я думаю, что нужно значение строки в date как-то к дате преобразовать, но не пойму как
-
Evgeny
-
Evgeny
-
Это названия поля
-
А если нажать на кнопку редактирования, отобразится тип
-
Слевой стороны
Evgeny
-
Тут тип не пишется, я так понимаю это просто строка
Если не знать какая версия у тебя compass и ты не говоришь тип, то по подстветки можно предположить, что у тебя строка. Когда ты её прокидываешь в ISODate, то он её конвертирует в 1970-01-01T00:00:00.000+00:00
Evgeny
-
Evgeny
Evgeny
Slava
Всем привет!
У меня есть 2 коллекции mongo (я использую mongoose):
Collection Game {
leaderboard: number[]; // userId
}
Collection User {
userId: number;
points: number; // в данном случае не важно, может быть любое число
}
Мне нужен способ обновить коллекции User с помощью коллекции Game
Мне нужно пройтись по массиву leaderboard, сопоставить userId с User.userId и инкрементировать points (+1)
Я не хочу выгружать leaderboard в RAM (если проще: не хочу, чтобы массив данных инициализировался в JS), потому что коллекция может быть размером в миллион пользователей
Поэтому я ищу способ апдейта исключительно в среде mongo
Как лучше всего это сделать? Возможно есть какие-то похожие на firebase.transaction методы или через bulk?`
-
-
sp
из за 287-295 нечитабельная ошибка. Кто то может подсказать что не так? если эти строки закоментить и раскоментить 286, то все ок
Nick
Yaro
-
Мм, а как же $merge ?
Не знал т.к. не сталкивался с задачей как у него, но если даже бы знал, но подумал как её сделать подругому заместо использования $merge т.к. всякое может случиться в процессе слияния
Yaro
Pachka
Приветствую, подскажите пожалуйста как можно изменить поле в документе и сразу же в этой же "транзакции", в зависимости от этого поля изменять другие?
VinnyJ
Добрый день, подскажите, пожалуйста, не могу понять)
есть запрос который как я понимаю должен или пушить в массив данных объект или создавать новую запись и пушить в нее
Но оно почему то, когда нет такого юзера создает 2 записи в базе, а не одну, хотя отчитывается за 1 только
const isUserExist = (await User.findOne({ email })) != null;
await User.updateOne(
{ email, "api.key": { $ne: api?.key } },
{ $push: { api } },
{ upsert: !isUserExist },
);
{
acknowledged: true,
modifiedCount: 0,
upsertedId: new ObjectId("64bfddbe75b135853a6be5e1"),
upsertedCount: 1,
matchedCount: 0
}
В базе 2 записи в итоге с id "64bfddbe75b135853a6be5e1" и "64bfddbe75b135853a6be5e6"
Nick
Добрый день, подскажите, пожалуйста, не могу понять)
есть запрос который как я понимаю должен или пушить в массив данных объект или создавать новую запись и пушить в нее
Но оно почему то, когда нет такого юзера создает 2 записи в базе, а не одну, хотя отчитывается за 1 только
const isUserExist = (await User.findOne({ email })) != null;
await User.updateOne(
{ email, "api.key": { $ne: api?.key } },
{ $push: { api } },
{ upsert: !isUserExist },
);
{
acknowledged: true,
modifiedCount: 0,
upsertedId: new ObjectId("64bfddbe75b135853a6be5e1"),
upsertedCount: 1,
matchedCount: 0
}
В базе 2 записи в итоге с id "64bfddbe75b135853a6be5e1" и "64bfddbe75b135853a6be5e6"
выборки идут по разным критериям. При поиске используется просто email: email
а при апдейте email и api.key
должно быть одинаковое услвоие
VinnyJ
Yaro
Добрый день, подскажите, пожалуйста, не могу понять)
есть запрос который как я понимаю должен или пушить в массив данных объект или создавать новую запись и пушить в нее
Но оно почему то, когда нет такого юзера создает 2 записи в базе, а не одну, хотя отчитывается за 1 только
const isUserExist = (await User.findOne({ email })) != null;
await User.updateOne(
{ email, "api.key": { $ne: api?.key } },
{ $push: { api } },
{ upsert: !isUserExist },
);
{
acknowledged: true,
modifiedCount: 0,
upsertedId: new ObjectId("64bfddbe75b135853a6be5e1"),
upsertedCount: 1,
matchedCount: 0
}
В базе 2 записи в итоге с id "64bfddbe75b135853a6be5e1" и "64bfddbe75b135853a6be5e6"
неконсистентно
лучше будет insertOne
если запись есть (судя по ошибке инсерта) - значит уже существует
иначе успешный инсерт
А
Доброго вечера всем, лучше использовать один клиент и несколько пулов в него или лучше постоянно создавать нового клиента для каждого подключения (база - монгодб)?
А
тоесть клиент должен быть на одно веб приложение один - а подключений к базам несколько верно?
yopp
да, но вам не нужно управлять подключениями, драйвер всё сделает за вас
А
а стоит ли указывать в конфигах этого клиента максимальное и мин колво пулов? или драйвер тоже делает это за меня?
А
и ещё вопрос - как лучше распределять данные - много таблиц и одно дб или лучше равномерно распределить данные в разных дб где могут повторяться названия таблиц?
А
есть ли разница между mongoengine ОРМ и нативным драйвером Монго? *в плане производительности и других технических качеств
Mashxurbek
Никита
Подскажите, пожалуйста, кто знает, как работает mongodump / mongorestore при переносе данных?
К примеру, mongodump длится 1 час, использует ли mongodump snapshot isolation или данные в процессе могут поменяться? Не могу найти инфу на официальных доках
Nick
Никита
Nick
А без oplog как будет работать, не знаете?
Without
--oplog
, if there are write operations during the dump operation, the dump will not reflect a single moment in time. Changes made to the database during the update process can affect the output of the backup.
Никита
Nick
Никита
Egor
Кстати, если пошел разговор за бэкап/рестор... А есть ли возможность сделать репликацию отдельной базы с одного хоста на другой без replica set и вот этого всего. Чтобы эта репликация шла себе шла , а потом мы быстро подменяем connectionString и у нас продолжается работа уже с новым хостом MongoDB. В свое время с MySQL так делал, если память мне не изменяет. То есть я во время работы приложения, делаю дамп с фиксированием некоей позиции. Разворачиваю дамп на другом хосте. Запускаю репликацию с этой позиции. И, соответственно, потом переключаюсь с одого хоста на другой с минимальным временем простоя. С MongoDB можно такой трюк провернуть?
Air
я сейчас делаю mongoimport merge по своему string полю
если я буду делать по _id полю процесс будет происходить быстрее или с такой же скоростью? надо merge 150к документов
почти 3 часа шло
Air
на тестовой бд, где итак 150к
а теперь на проде надо сделать
там среди 6млн документов надо merge 150к
Nick
Air
Nick
Дима
Всем привет! Кто работал со сваггером, помогите, пожалуйста. Есть CreateAssetDto: (1 фото). Так же имеется @ApiBody: (2 Фото). Все работает так как надо, но когда задаю поля price, likes, rating в сваггере, вылезает ошибка (3 фото). Не понимаю как решить, вроде и там и там используется number
Дима
Дима
Дима
Nick
Air
--numInsertionWorkers=10
--numInsertionWorkers 10
я правильно понимаю что можно так и так?
Дима
Nick
Nick
Дима
Дима
Viktar
Ghost
Всем здравствуйте. В MongoDB можно реализовать вот такую штуку.
Например, автор может иметь несколько книг, а книги могут входить в несколько жанров.
Знаю, что такую штуку можно реализовать в реляционных бд, например, в postgresql.
P.S. Решил размять мозги, сев на mongodb
Nick
Ghost
Yaro
Vadzim
всем привет, обновил монгу с 3 версии до 6. Смотрю на потребление оперативной памяти - монго практически всю съедает, возможно , конечно, так и до обновления было, но вряд ли. Может кто подскажет пожалуйста в какую сторону смотреть?
Larymar