Вася
каким запросом получить Один последний элемент.
если findOne находит первый, то как получить последний
Sardor
Sardor
Можно по _id отсортировать и взять первый
Вася
Lev
Здравствуйте, я работаю с mongodb из раста (с помощью wither) и у меня возникает ошибка Error: Mongo(Error { kind: ServerSelectionError { message: "Server selection timeout: No available servers. Topology: { Type: ReplicaSetNoPrimary, Servers: [ { Address: ..., Type: Unknown }, { Address: ..., Type: Unknown }, { Address: ..., Type: Unknown }, ] }" } }), что она значит?
Почему сервер может быть "недоступен" для приложения, если на самом деле он работает нормально?
Андрей
Андрей
Что лог СУБД и апликухи говорят при неудачном подключении?
Lev
Здравствуйте, я работаю с mongodb из раста (с помощью wither) и у меня возникает ошибка Error: Mongo(Error { kind: ServerSelectionError { message: "Server selection timeout: No available servers. Topology: { Type: ReplicaSetNoPrimary, Servers: [ { Address: ..., Type: Unknown }, { Address: ..., Type: Unknown }, { Address: ..., Type: Unknown }, ] }" } }), что она значит?
Ну ошибка вот эта, а к собственно серверу он, как я понимаю, не подключается
Roman
Ошибка эта значит, что в вашем replica set не нашлось primary.
Попробуйте через консоль зайти на сервер и посмотреть, если ли primary, и проверьте, что ваше приложение коннектится к реплика сету, а не к отдельной реплике
Lev
Roman
А у вас база где создана, в atlas?
Lev
Да
𝕯𝖆𝖓𝖎𝖑𝖆
гайз, можно как-то отправить документ на сервер монги, чтоб определенные поля зашифровались в какой-нить md5? именно чтоб на стороне сервера монги выполнилась функция
Roman
Да
Тогда в атласе щелкаете кнопку connect, там connect with mongo shell, копируете это в консоль, меняете имя базы, и коннектитесь.
А затем, когда приконнектитесь, вводите команду rs.status() и смотрите, есть ли шард с stateStr "PRIMARY"
Lev
Да, есть
Lev
Vsevolod
Подскажите, вот этот запрос возвращает ошибку: Updating the path 'enqs' would create a conflict at 'enqs' (40) (on mongo:27017, legacy retry, attempt 1)
{"$push"=>
{"enqs.0.qops"=>{"$each"=>[{"_id"=>BSON::ObjectId('5f27e6f99551e802b12ec627'), "lbl"=>{"en"=>"Not sure"}, "u_at"=>2020-08-03 10:29:13 UTC, "c_at"=>2020-08-03 10:29:13 UTC}]},
"enqs"=>
{"$each"=>
[{"_id"=>BSON::ObjectId('5f27e6f99551e802b12ec628'),
"uitp"=>:checkbox,
"lqst"=>{"en"=>"A u ok?"},
"req?"=>false,
"ico?"=>false,
"u_at"=>2020-08-03 10:29:13 UTC,
"c_at"=>2020-08-03 10:29:13 UTC}]}}}
Это из-за того, что тут одновременно обновляется одна и таже запись enqs.0?
Roman
Да, есть
А какой connection string используете в своем приложении?
Lev
mongodb+srv://login:password@cluster0.ipu5k.gcp.mongodb.net (вместо login и password логин и пароль)
senpos
Поделитесь примерном того как в aggregation делать lookup на основе другого lookup.
Пример моих данных и того, что я хочу получить: https://nekobin.com/lilaqopawo.js
Задача: посчитать количество постов, с группированных по ID гильдии (автор может быть в одной гильдии).
С этим просто.
db["Posts"].aggregate([
{
$lookup: {
from: "Authors",
localField: "authorId",
foreignField: "_id",
as: "author",
},
},
{ $unwind: "$author" },
{
$group: {
_id: "$author.guildId",
count: { $sum: 1 },
},
},
{ $sort: { count: -1 } },
]);
А вот как получить еще и название гильдии - непонятно.
То есть, мне нужен еще один лукап по $author.guildId.
senpos
Если что непонятно описал - спрашивайте, когда в голове это все прокручиваешь с контекстом - кажется что просто. А это может быть не так))
Roman
$lookup: {
from: "Guilds",
localField: "_id",
foreignField: "_id",
as: "guild",
}
Вот так не сработает?
senpos
Roman
Да
senpos
Lev
Vsevolod
Подскажите, вот этот запрос возвращает ошибку: Updating the path 'enqs' would create a conflict at 'enqs' (40) (on mongo:27017, legacy retry, attempt 1)
{"$push"=>
{"enqs.0.qops"=>{"$each"=>[{"_id"=>BSON::ObjectId('5f27e6f99551e802b12ec627'), "lbl"=>{"en"=>"Not sure"}, "u_at"=>2020-08-03 10:29:13 UTC, "c_at"=>2020-08-03 10:29:13 UTC}]},
"enqs"=>
{"$each"=>
[{"_id"=>BSON::ObjectId('5f27e6f99551e802b12ec628'),
"uitp"=>:checkbox,
"lqst"=>{"en"=>"A u ok?"},
"req?"=>false,
"ico?"=>false,
"u_at"=>2020-08-03 10:29:13 UTC,
"c_at"=>2020-08-03 10:29:13 UTC}]}}}
Это из-за того, что тут одновременно обновляется одна и таже запись enqs.0?
Если кому интересно, то решил эту ошибку отправив два $push запроса вместо одного
Lev
Ну оно же иногда подключается
Lev
К тому же, это же через Atlas
Владимир Т
Здравствуйте. Можно ли ускорить работу mongorestore? таблица 1 млрд доков, размер 35 Гб, ресурсы сервера особо не кушает, лопатит с прошлой среды. Чтото не так, или норм?
Daniil
Владимир Т
Владимир Т
Сегодня 2% за день
Владимир Т
🤣
Daniil
он вроде тупо последовательно вычитывает и вставляет доки
Владимир Т
Странное различие по времени при создании дампа и его восстановлении
Victor
Всем привет!
Кто из Украины есть и может проконсультировать(платно) по созданию запроса на Mongoose?
Андрей
Что по очереди на дисках?
Владимир Т
Roman
Вставляю данные в базу потом делаю findOne. И возвращается старая запись. Как исправить?
Монгус
Nemo
Roman
у меня есть в базе юзер и у него есть карта при ее повторном сохранении (карты юзера) она перезатирается. Потом я делаю файнт этой карты по юзер айди а мне возвращается старая запись, хотя в базе данные обновляются
Daniil
Андрей
Roman
Roman
а я данные обновляю через update а потом читаю
Андрей
Сингл или кластер?
Daniyar
Roman
это исключено, я делаю 2 отдельных запроса через постмен
1. обновляю
2. проверяю
Roman
это findOneAndUpdate присутствует в коде
Daniyar
зачем обновлять и потом кидать запрос на findone
Roman
браузер может кешировать?
Daniyar
или я не понял проблему...
Roman
Roman
тут логики много завязано, долго вникать вам предется, сейчас упрощу для понимания
Roman
я узер и я хочу призявать карточку
есть 2 запроса
1. payment если карточка уже есть то ее создаем, если уже есть то обновляем
2. проверка findCardByUseriD —-> old data приходит
Roman
вся проблема
Daniil
вся проблема
Проблема в том, что если все сделано правильно, то и работать будет правильно
Daniil
Где то в вашей «много логики» допущена какая то ошибка и вы ее не замечаете
Daniil
Нужно дебажить запросы
Wjatscheßlavvee
Roman
Wjatscheßlavvee
Ну в теории все должно работать штатно.
Звучит как рабочий вариант)
Я думаю тут и правда без куска кода не обойтись с этими последовательными запросами
Serhii
привет ребят. поясните нормально плиз, че делает метод populate и execPopulate?
Nemo
популят ложит заместь ссылки на другую схему . в 1 схеме ложит обьект 2рой схемы
Nemo
допустим есть новость и автор схемы. в новости есть ссылка на автора. при популяте. и выборке с бд у тебя будет в обьекте новость. содержатся обьект автора
Nemo
Nemo
народ в монге есть же автоинкремент. что по умолчанию там будет новости например айди давать от 1
Anonymous
Vasily
Всем привет!
Хотим сменить одну из баз с mongoDB на PSQL
Чтобы примерно оценить (очень примерно) объем который понадобится для PSQL как лучше поступить?
Насколько адекватный это подход:
Допустим mongo весит 1ТБ
Я примерно посмотрел по данным которые мы собираем в mongoDB из сторонних PSQL и понял что в исходных БД таблицы занимают меньше, около 65% от размера коллекций в mongoDB
Поэтому делаю вывод что нам понадобится около 650ГБ для хранения данных, которые в монге занимали 1ТБ
Nick
Nick
Может статься так что поедете обратно на монгу
Denis
Nick
Nick
yopp