Valdis
всем привет. есть ли какой-то способ оценить пропускную способной монги через mongoose на ноде?
Nemo
Если Вы проверите сперва вай айдишник, является ли он bson. Object это раз. Два если по такому айдишник записи нет, то что Вы хотели получить?) получаете объект проверяете на Нил если не Нил работайте с ним.
ну проверить ифом это то понятно. - но наверное не правильно и не красиво. наверное грамотно это все в запросе к бд проверять? . типа берем сообщение по обект айли. узнаем есть ли совпадения по другому полю - например имени - типа Нужно, по логичному если перефразировать. что бы пользователь - мог добавить лишь одну новость, с таким именем(уникальное поле типа *пример)
Nemo
разве нет. просто в монгусе синтаксис же немного другой
Nemo
тогда оно вернет либо 0 либо что-то
Nemo
и просто проверка нуль ли при проверке при регистрации новой новости
Nemo
а не гомнокодить
Nemo
ладно сам найду
Nemo
думал просто ответят быстрее, прост синтаксис забыл
Nemo
а так смысла нет
Nemo
строчить текста кило
Daniil
ну проверить ифом это то понятно. - но наверное не правильно и не красиво. наверное грамотно это все в запросе к бд проверять? . типа берем сообщение по обект айли. узнаем есть ли совпадения по другому полю - например имени - типа Нужно, по логичному если перефразировать. что бы пользователь - мог добавить лишь одну новость, с таким именем(уникальное поле типа *пример)
Используйте уникальный индекс на это поле просто и все. При вставке необходимо обработать возможную ошибку и если это ошибка duplicate error, то соотвествующий образом ответить на клиент, а клиент уже должен обработать этот ответ и показать ошибку пользователю в удобном виде
Daniil
Если вам нужно проверять на уникальность прям в процессе ввода, то с некоторой задержкой отправляйте содержимое поля ввода на сервер и проверяйте на совпадение по нужному полю
Nemo
хотя в принцепе. это конечно можно и в конце все проверять. пускай юзер страдает, беком на начало(назад на 3 шага) ХД(если введет что не верно)
Александр
Такая штука вышла. Есть модель м монге. В некоторых записях есть поле, в некоторых его нет. Это бул. Делаю команду cli которая должна отработать документы с полями у которых поле false. Но из-за того что у некоторых документом нет этого поля они не попадают в выборку. Как это разрулить? Пропатчить все документы что бы было это поле или можно как то достать документы без этого поля?
Daniil
хм логично спасибо, но к сожелению это все делается в телеграмм боте. и данные собираются за несколько шагов, а не все сразу.
логично делать так, чтобы на первом шаге (-ах) собирались те данные, которые с большей вероятностью могут быть отвергнуты сервером и при переходе с шага на шаг выполнять все необходимые проверки
Daniil
А or не даёт дубли в результате выборки ?
нет, да и условия у вас не пересекающиеся
Александр
Nemo
логично делать так, чтобы на первом шаге (-ах) собирались те данные, которые с большей вероятностью могут быть отвергнуты сервером и при переходе с шага на шаг выполнять все необходимые проверки
✌️ ну телега такая - пошаговая. можно и предложить конечно юзеру все в одну строчку вписать. но по мне удобней ему все будет писать по отдельности на каждом шаге и с обяснениями. даже если это название новости)
Nemo
кста а как мне указать денамически название поля?
Nemo
Nemo
Егор
Всем привет. Подскажите по geoNear плз. У меня есть Коллекция const ArticleSchema = new Schema({ ******* fromLocation: [Number], toLocation: [Number], ******* }); Я осуществляю поиск по полю fromLocation и это у меня выходит, но так же мне нужно одновременно искать по полю toLocation. + другие не гео условия. await Article.aggregate([ { $geoNear: { near: [ Number(filter.from.data.geo_lat), Number(filter.from.data.geo_lon), ], distanceField: "distanceFrom", // maxDistance: 0.5 / 6371, // distanceMultiplier: 6371000, key: "fromLocation", includeLocs: "fromLocation", spherical: false, }, }, { $match: { "from.data.city_fias_id": filter.from.data.city_fias_id } }, ]); Шото инфы по множественным геоусловиям найти вообще не могу. Сейчас делаю через агригации
Edgar
Здарова, работает ли mongorestore для версии монго сервер 4.4 с дампом из версии 2.x.x?
Edgar
Ребят, в доке пишут, что mongorestore идёт в комплекте с установкой коммюнити сервер 4.4, но в /bin нету mongorestore.exe. Раньше во 2 версии было
Андрей
На днях делал 😊
Edgar
На днях делал 😊
класс, тогда попробую
Edgar
В 4.4 утилиты вынесли в отдельный пакет, https://docs.mongodb.com/database-tools/installation/#install-tools
Да, устанавливаю, благодарю. Ура, оно ресторнуло мой мамонтячий дамп!!!
Edgar
Дорогие друзья, можно ли как-то использовать транзакции, не используя replica set?
Roman
Можно сделать реплика сет из одной ноды
Edgar
Можно сделать реплика сет из одной ноды
ух ты, везде, где читал и смотрел говорили, что нужно 3
Андрей
Edgar
Из одного хоста будет правильней
т.е. всё равно 3 инстанса mongod?
Андрей
Да
Nick
ух ты, везде, где читал и смотрел говорили, что нужно 3
Достаточно настроить репликасет с одной нодой монги. Вообще для транзакций просто напросто нужен oplog, который как раз настраивается в репликасете
Nick
Да
js - one love
привет, а в mongoose можно ли задать длину? получит 10,20 юзеров,типо так
js - one love
Да, используйте limit
спасибо,но там если параметр limit больше чем документов вылетает ошибка
js - one love
User.find({}).select("-password").limit(length);
js - one love
а нет все нормально,я строку передал оказывается,спасибо)
Александр
есть такой документ { "_id" : ObjectId("......"), "is_cloud" : false, "width" : 60, "height" : 60, "local_path" : "public/....62.jpeg", "is_export" : true } делаю несколько запросов findOneAndUpdate где let filter = {$or: [{is_cloud: false}, {is_export: false}, {is_cloud: {$exists:false}}]}; let update = {$set: {is_export: true}}; let options = {returnOriginal: true}; в ответе получаю один и тот же документ хотя ожидаю что вернет какой то другой без is_export или где он false что я делаю не так ? я думаю это из за $or, может нужно разбить на 2 подусловия (is_cloud and is_cloud exists) or (is_export and is_export exists)
Daniil
какой первый попал под ваши условия такой и нашелся
Daniil
если он по is_cloud попадает в выборку, то неважно какой там у него is_export
Daniil
если вам нужны документы у которых is_cloud: false или не существует И при этом is_export: false, то вынесите {is_export: false} из $or на первый уровень запроса (это эквивалентно $and)
Александр
если он по is_cloud попадает в выборку, то неважно какой там у него is_export
is_export это флаг лока записи, это означает что он начал переливаться в облако но в этот момент is_cloud еще false потому что операция не завершена
Александр
если вам нужны документы у которых is_cloud: false или не существует И при этом is_export: false, то вынесите {is_export: false} из $or на первый уровень запроса (это эквивалентно $and)
пошел чуть другим путем, в место того что бы искать что нужно, решил исключить что не нужно, вышло так {$nor: [{is_export: true}, {is_cloud: true}]}
Daniil
Но не думаю что это критично в вашем случае
Андрей
Приветствую. Нашел пакет для миграций - npm i migrate-mongo . Такой конфиг const path = require('path'); const dotenv = require('dotenv').config({ path: path.resolve(__dirname, '../.env') }) const config = { mongodb: { url: dotenv.parsed.DATABASE_HOST, databaseName: dotenv.parsed.DB_NAME, options: { useNewUrlParser: true, useUnifiedTopology: true, } }, migrationsDir: "migrations", changelogCollectionName: "changelog", migrationFileExtension: ".js" }; module.exports = config; Запускаю migrate-mongo up получаю ERROR: Authentication failed. Имя базы, пароли и пользователь верные 100%.
Андрей
Почему ошибка может быть еще?
Андрей
Проверил, все парсится нормально, я и хардкодил строки url и base name
Daniil
Проверил, все парсится нормально, я и хардкодил строки url и base name
нафиг вообще этот пакет? он не улучшает процесс относительно элементарного самописного скрипта с миграцией
Андрей
А как быть если я начинающий в монге и хочу делать миграции?
Daniil
А как быть если я начинающий в монге и хочу делать миграции?
написать скрипт который делает миграцию, там все тоже самое, что вы уже делали с монгой при разработке своего приложения
Андрей
написать скрипт который делает миграцию, там все тоже самое, что вы уже делали с монгой при разработке своего приложения
А есть какой то черновой вариант у вас, что бы подглядеть примерно как это пишется?
s
Всем привет. У меня вопрос: я принимаю массив с документами внутри функции, затем мне нужно в базе данных обновить эти самые документы до того состояния, в котором они пришли в массиве. Какой наиболее оптимальный способ это сделать?
s
окей
s
а это сильно будет отличаться от времени, если мы удалим эти доки из бд и запишем заново то, что пришло в массиве?
s
понял
s
спасибо