Dmitriy
вот в компассе делаю в MongoSH
Nick
начиная с 4.0 или 4.2 утилиты вынесены в отдельный пакет поставки
Nick
вот в компассе делаю в MongoSH
забудьте пр окомпас
Nick
это нативно в консоли
Dmitriy
ну вообще у меня кластер в Атласе
Nick
https://docs.mongodb.com/database-tools/mongodump/
Nick
ставите себе утилиты, запускаете и не боитесь что вам чето поламает компас
Nick
https://docs.mongodb.com/database-tools/mongodump/
там рядом остальные утилиты
Andrey
ребят, есть уже существующий updateOne, можно ли добавить как-то $set определенного поля если его не существует?
Andrey
грубо говоря .updateOne( { _id: dbPayment.accountid, }, { $inc: { balance: dbPayment.credits, }, }) хотелось бы сделать $set: {verified: new Date()} но только если поля verified еще нет, без доп операции
Andrey
хочешь на каждый документ иметь время создания?
нет, это метка подтверждения аккаунта при первой операции, дальнейшие разы не нужно перетирать самую первую метку
Herman
привет) такой вопрос у меня вот такая сущность юзер, хотя в массиве paymentCards именить один из обьектов по его _id , но чет не получается( "comments": [], "orders": [], "tikTokAccounts": [], "tikTokVideos": [], "paymentCards": [ "9999999999999999", { "_id": "5fc92cdba2f9b6997383dd4e", "cardNumber": "1111111111111111" }, { "_id": "5fc930b1eaceb59c821c1611", "cardNumber": "1111111111111111" } ], "_id": "5fc92b4ca2f9b6997383dd4c", "userName": "ANO", "email": "ano@gmail.com", "password": "$2b$10$YM7sNNuN9Igewc84cN5SsewksuWpy7iuwb1Nkqub5aQjphja.pT8u", "avatar": "https://www.flaticon.com/svg/static/icons/svg/667/667378.svg", "status": "USER", "moneyAmount": 0
Herman
делаю такой запрос
Herman
https://docs.mongodb.com/manual/reference/operator/update/positional/
Herman
как я типо думал, отсортировать сначала по имейлу юзера, потом в том массиве взять нужный обьект по айди
Herman
привет, может кто помочь?
Herman
https://docs.mongodb.com/manual/reference/operator/update/positional/
пытаюсь юзать $update но не пашет
Herman
делаю такой запрос
ребят кому не сложно, подскажите)
Andrey
ребят кому не сложно, подскажите)
в чем вопрос то? что не получается, что не пашет? логи, ошибки, ожидания напишм
Herman
в чем вопрос то? что не получается, что не пашет? логи, ошибки, ожидания напишм
нужно залезть в сущность юзер, там выбрать в массиве paymentCards обьект по айди, который передаю в params и изменить там номер на тот которы передаю в body
Herman
Herman
Herman
я по доке лазил, вроде никаких ошибок
Herman
она случайно получилась) все равно базу сносить буду
Herman
у меня там в массивах только обьекты должны быть
Herman
напрягает что у тебя в массиве как объекты так и строки
в общем удалить например, могу, а вот edit не получается никак
Andrey
вот в доке пример db.students.updateOne( { _id: 4, "grades.grade": 85 }, { $set: { "grades.$.std" : 6 } } )
Herman
вот в доке пример db.students.updateOne( { _id: 4, "grades.grade": 85 }, { $set: { "grades.$.std" : 6 } } )
const editCardNumber = await User.updateOne( { email, 'paymentCards._id': ids }, { $pull: { 'paymentCards.cardNumber': cardNumber } }
Andrey
в ids что лежит?
Herman
Herman
с params
Andrey
не понимаю что такое params ))) в доке 0 об этом ключевом слове ну так не делай пул, почему не сделать set?
Andrey
скинь код, который пробовал с $set
Herman
скинь код, который пробовал с $set
так типо http://localhost:3000/api/user/edit/cardNumber/5fca3abb6bb34cb1f5452d2c
Andrey
да до лампочки это причем тут?
Andrey
ты по базе вопрос же задаешь
Herman
да
Andrey
давай составим запрос, где кто и за кого там хлопает бургеры не интересует
Herman
ты просто спросил про params)
Andrey
ну ты просто мне пишешь про то что не важно на уровне шума оперируй контекстом вопроса и топика в части базы
Herman
давай составим запрос, где кто и за кого там хлопает бургеры не интересует
код с set const editCardNumber = await User.updateOne( { email, 'paymentCards._id': ids }, { $set: { 'paymentCards.cardNumber': cardNumber } })
Andrey
где знак доллара?
Andrey
в доке он есть
Herman
пипец...
Herman
Herman
я не знаю, чем я смотрел, точнее я догадываюсь
Herman
в доке он есть
спасибо что отрыл глаза
Andrey
Dezmunt
Нужно сделать пагинацию с учетом фильтров на странице. Я при выдаче даю по 16 элементов через limit и skip. Но мне надо корректно отображать количесвто страниц на фронте для этого нужно общее количество полученных записей БД с учетом запроса. Делать повторный запрос без лимита чтоб потом взятб длину слишко больно по производительности. Как быть?
Azamat
Привет! Использую https://www.npmjs.com/package/mongoose-aggregate-paginate-v2. У меня в Mongoose Schema имеются virtual fields. А этот плагин удаляет их из результата запроса. Что делать чтобы он оставил virtual fields?
Dan
нэт)
...
Спасибо) сделал
Dezmunt
Мы може в агрегации как нибудь получить через lookup несколько определенных полей из другой коллекции? в populate это делалось без проблем, задавалось массивом, а тут вообще хз как
Andry
Всем вечер!
Andry
Подскажите пожалуйста такая проблема
Andry
db.getCollection('Order').find({ $where: "'LoyaltyCardId'.startsWith('71')"}).limit(1)
Andry
Делаю такой запрос и висит просто адски долго
Andry
на поле индекс неуникальный
Mirasov
Example app listening at http://localhost:2000 (node:16992) DeprecationWarning: current Server Discovery and Monitoring engine is deprecated, and will be removed in a future version. To use the new Server Discover and Monitoring engine, pass option { useUnifiedTopology: true } to the MongoClient constructor. (Use node --trace-deprecation ... to show where the warning was created)
Nick
db.getCollection('Order').find({ $where: "'LoyaltyCardId'.startsWith('71')"}).limit(1)
where не использует индексы, используйте regexp с явным указание символа начала строки, чтобы имитирова startWith
Mirasov
из за чего такая ошибка может произойти
Nick
из за чего такая ошибка может произойти
это не ошибка, а варнинг. И там собсна написано что делать To use the new Server Discover and Monitoring engine, pass option { useUnifiedTopology: true } to the MongoClient constructor.
Mirasov
но предупреждение чего?
Nick
но предупреждение чего?
current Server Discovery and Monitoring engine is deprecated
Nick
стандартное предупреждение о том что в будущем вам надо будет переписат ькод и вы можете сделать это сейчас, а не ждать когда все именно сломается
Andry
А подскажите еще один момент
Andry
db.getCollection('Order').find({"LoyaltyCardId" : "/^85/"}, {"_id":1, "LoyaltyCardId":1}).count()