Bogdan
uptade, findOneAndUpdate
NO WAR!
Попробуйте так: ChatUser.update( { _id: person._id }, { $push: { acct: objectToInsert } } );
Заменил на updateOne, т.к. на update ругался как на устаревший. На код уже не ругается. Прогресс. 😀 Спасибо. Но в базе объект не добавился. Пустой массив как и был. Базу не нужно сохранить, чтобы поддокумент отобразился?
NO WAR!
Код. На всякий случай.
Р00-👨🏻‍💻Михаил
Код. На всякий случай.
Так непохоже на рабочий код
Р00-👨🏻‍💻Михаил
Надо делать так
Р00-👨🏻‍💻Михаил
{$push: { ‘acct.nick’: ‘1’, ‘acct.tag’: ‘1’ }}
Р00-👨🏻‍💻Михаил
Но для операции $push ОБЯЗАТЕЛЬНО иметь предопределенный массив или не сработает
Р00-👨🏻‍💻Михаил
Нет
Р00-👨🏻‍💻Михаил
Тогда на худой конец делай проверку
Р00-👨🏻‍💻Михаил
if !chatUser.acct.nick
Р00-👨🏻‍💻Михаил
И делай там update с $set acct.nick: [‘1’]
Р00-👨🏻‍💻Михаил
Но лучше бы при insert предопределять, все-таки это скелет и у каждого объекта этот массив должен быть
Р00-👨🏻‍💻Михаил
Не сработало.
Нарисуй JSON что ты хочешь видеть в базе в итоге
Р00-👨🏻‍💻Михаил
Покажи, да
NO WAR!
Покажи, да
Вот. Простенькая.
Р00-👨🏻‍💻Михаил
Я конечно особо в монгусе не силен пока что но по-моему тут должно быть вот так https://stackoverflow.com/a/26008603
Р00-👨🏻‍💻Михаил
А то что ты хочешь сделать провалит валидацию априори
Р00-👨🏻‍💻Михаил
Потому что у тебя в валидации другая монгус модель Но могу ошибаться но скорее всего тебе нужны foreign key
Р00-👨🏻‍💻Михаил
Либо сократить валидацию до массива с объектами а не целой моделью если не хочешь отдельную коллекцию
Р00-👨🏻‍💻Михаил
const courseSchema = new mongoose.Schema({ name: { type: String, required: true }, users: [ { name: { type: String, required: [true, "Name is required"] }, age: { type: Number, required: [true, "Age is required"] }, contact: { type: Number, required: [true, "Contact is required"] } } ] });
NO WAR!
А то что ты хочешь сделать провалит валидацию априори
Так не ругается никто. Ни mongoose, ни mongo. Все принимают. Даже создают запись в коллекции. Не могу только в массив добавить.
Р00-👨🏻‍💻Михаил
Поменяй вместо схемы закинь туда просто объект с полями
Р00-👨🏻‍💻Михаил
Думаю именно это неправильно
Р00-👨🏻‍💻Михаил
И пуш уже делай так $push: { acct: { nick: ‘123’, tag: ‘123' } }
NO WAR!
И пуш уже делай так $push: { acct: { nick: ‘123’, tag: ‘123' } }
Все сделал. Не помогло. 😀 Сейчас еще схему вышлю.
NO WAR!
Р00-👨🏻‍💻Михаил
Какой тип у user._id?
Р00-👨🏻‍💻Михаил
typeof
Р00-👨🏻‍💻Михаил
String или ObjectID?
Р00-👨🏻‍💻Михаил
Если String (а стопудово String) — {_id: ObjectId(user._id)}
Р00-👨🏻‍💻Михаил
Выведи просто user._id
Р00-👨🏻‍💻Михаил
Я могу серьезно ошибиться но попробуй {_id: String(user._id)}
NO WAR!
Я могу серьезно ошибиться но попробуй {_id: String(user._id)}
Ничего не изменилось. Принял, не ругается, но ничего не добавил. Прикладываю еще ответ от updateOne. Может из него что-то станет понятнее.
Р00-👨🏻‍💻Михаил
Пробуй снести коллекцию
Р00-👨🏻‍💻Михаил
И будь уверен что софт тоже рестартанул
Р00-👨🏻‍💻Михаил
Есть ощущение что схема запомнилась такой какая она была изначально потому проебывается
NO WAR!
Хмм... Снес, запустил код, а она не появилась обратно. Буду копать. Но уже завтра, наверное. Сегодня уже сил нет. Спасибо, добрый человек. 😀 Можно будет завтра, т.е. сегодня но уже утром, побеспокоить?
Р00-👨🏻‍💻Михаил
Р00-👨🏻‍💻Михаил
Р00-👨🏻‍💻Михаил
Воспроизвел - работает отлично так что пользуйся Если у тебя все точно так же - проверь последовательности
NO WAR!
😉
Anonymous
Всем привет! у меня вопрос , как можно сделать задержку на использование команды
Anonymous
например пользователь получил бонус а следующий только через 24 часа
Anonymous
питон
Simon
Всем привет! у меня вопрос , как можно сделать задержку на использование команды
Не надо делать никаких задержек, можно сделать какой нибудь сервис, который мониторит бонусы клиентов и прописать там всю логику обновления
Anonymous
а в самом коде не вариант
Alexander
Записывать ид-шник пользователя и время получения бонуса, при запросе проверять что ттл не истек.
Anonymous
у меня дискорд бот
NO WAR!
На рабочий пример
Заработало после того как добавил User.save() Видимо в этом и была проблема. Еще раз спасибо. 🤝
Viktar
например пользователь получил бонус а следующий только через 24 часа
Посмотрите в сторону https://docs.mongodb.com/manual/tutorial/expire-data/
NO WAR!
Пожалуйста
Рабочий [Разработка] ваш аккаунт?
NO WAR!
Нет
Понял
NO WAR!
На рабочий пример
Добрый день. Заработало но не совсем. 😀 Если на момент старта кода в базе нет коллекции (дропнул ее по вашему вчерашнему совету), то при первом запуске кода выдает ошибку на скриншоте. При этом в Компасе вижу, что коллекция уже появилась, а в коллекции уже есть документ первого пользователя. При втором запуске кода все срабатывает без ошибок. Что это может быть?
NO WAR!
Уточнение Ошибка случается каждый раз при попытке добавить новый документ в коллекцию.
Разобрался. Сохранять надо было документ, а не коллекцию. Теперь вроде все работает.
Р00-👨🏻‍💻Михаил
Разобрался. Сохранять надо было документ, а не коллекцию. Теперь вроде все работает.
Все на поверхности все логично Периодически заглядывай в код либы там показывается какие свойства и функции он отдаёт, а обычно даже подписаны комментарии с примерами
Р00-👨🏻‍💻Михаил
Ну и внимательности побольше, это да
Andrey
коллеги, вопрос такой. Необходимо сменит схему всех документов в 1 коллекции, документов много, планировал экспортировать коллекцию в файл, и переструктурировать записи кодом, и после загрузить в базу обратно. Но свободных 12 tb - нет. В связи с этим возникла идея, выгружать через mongoexport блоками, условно по 10 млн, менять структуру, и загружать в новую коллекцию. Вопрос в чем, если в коллекцию не пишем сейчас, то можно ли быть уверенным, что mongoexport с опциями skip и limit - выгрузить так все документы, без пересечений. Можно ли быть уверенным что mongoexport корректно будет пропускать столько надо
Andrey
В Mongo схема гибкая. Разные документы, могут быть с разными "схемами". Менятся все в базе без выгрузок. https://docs.mongodb.com/manual/tutorial/model-data-for-schema-versioning/
это несколько не то в моем вопросе. здесь по ссылке, речь о том, что у вас была схема документа, и вы знаете как документ "устроен", я не могу гарантировать, что какие-то поля есть в записи, каких то нет, поэтому в моём персональном случае это не поможет
Andrey
https://university.mongodb.com/courses/M001/about
в таком случае, возможно пример схемы, в которой описывается документ, в котором может быть n полей начинающихся на x_...
Dmitry
в таком случае, возможно пример схемы, в которой описывается документ, в котором может быть n полей начинающихся на x_...
Схема может быть любая. В одной коллекции у каждого докумета своя уникальная. Для работы с такими докуменатми, для создания новых коллекций из них есть все средства в базе (зависит версия). Нет необходимости использовать экспорт-импорт. Какая задача изначально стоит?
Andrey
В том числе, в документам есть неизвестное количество полей начинающихся на x_. От них избавляемся, и переносим в array