Viktar
Чем сложнее тем больше точек отказа))
yopp
Во-первых unit тесты имеют смысл только для библиотек, бизнес логику дешевле покрывать интеграционным тестами. А во вторых сложность этого решения меньше чем в случае с db level locks
yopp
Тупо потому что тут энтропия состояний минимум на порядок меньше :)
yopp
Как и пограничных случаев
Viktar
)) ну тут больше надо отталкиваться от задачи. Я с монгой плотно знаком чуть больше месяца.
Viktar
Но весь мой опыт говорит, не надо делать то, что уже сделали до вас и это прекрасно работает)
yopp
Но весь мой опыт говорит, не надо делать то, что уже сделали до вас и это прекрасно работает)
Тащить ещё один инструмент ради элементарной задачи не эффективно. Любой новый инструмент приводит к экспоненциальном росту сложности проекта. Больше экспертизы, больше администрирования, больше вычислительных ресурсов, больше поддерживающей инфраструктуры. Оптимистичная блокировка это классический который инструмент, ничего изобретать не надо. Отсутствие в монге управляемых пользователем блокировок is a blessing. Есть атомарные операции, которые покрывают 80% случаев multi-document транзакции которые покрывают ещё 18%. Оставшиеся 1.99% решились бы serialized writes — очередью на запись для отдельного документа. Но этого пока нет :( И только вот этот 0.01% случаев вероятно будет валидным кейсом, в котором без пользовательских блокировок будет очень очень сложно
Viktar
Я с вами соглашусь. Менять инструмент в середине процесса, не самый лучший вариант. Если только не был изначально просчет, который привел к блоку дальнейшей разработки либо её очень сильно усложнил
Illia
Можно ли отсортировать коллекцию по двум полям, при условии, что первое поле есть не во всех документах, без aggregate? Есть ли ещё какие-нибудь варианты?
Анатолий
если поля нет, оно уйдет в конец или в начало в зависимости от направления сортировки
Illia
если поля нет, оно уйдет в конец или в начало в зависимости от направления сортировки
собственно поэтому я и ищу какой-то вариант кроме aggregate, чтобы не уходило в конец сортировки
Анатолий
но поля ведь нет, куда оно еще должно уйти? оно как раз и должно уйти в конец или начало
Illia
мне нужно сперва вывести результаты, которые с полем asc, а потом уже все остальные по другому полю asc, но так не получается. несуществующее asc уходит в конец
Illia
с 1 -1 пробовал
Анатолий
так аггрегация, это две разлиные сортировки, либо 2 запроса, что собственно хуже
Illia
да, поэтому ищу другие способы. сейчас сделал костылем с принудительным проставлением отсутствующего поля, но возможно есть какие-то другие варианты, которые я не учел
Анатолий
давай еще раз, ато я не очень понял есть документы в которых разные поля если ты отсортируешь .sort({"first": 1, "second": 1}) то получишь сперва все отсортированые по first а затем все отсортированые по second
Анатолий
или в первой пачке не должно быть документов в которых нет поля second?
Анатолий
а во второй не должно быть документов в которых нет поля first?
Illia
перечитал, неправильно изложил мысль, попробую переформулировать: есть поле “missing” - которое представлено не у всех документов. есть поле “notMissing” - которое есть у всех документов. делаю запрос на сортировку : {“missing”: 1, “notMissing”: 1} хочу получить [{missing: 0}, {missing: 1}, {missing: 2} итак далее, затем когда закончатся документы с missing полем идут документы с notMissing {notMissing: 0}, {notMissing: 1} и тд] сейчас при {“missing”: 1, “notMissing”: 1} получаю [{“notMissing”: 0}, {“notMissing: 1} … затем в конце {missing: 0}, {missing: 1}]. если сделать запрос {“missing”: 1, “notMissing”: 1}, то missing будет в начале, но в порядке убывания (3, 2, 1..)
Анатолий
у документов с “missing” есть поля “notMissing” а это противоречит сортировке по полю “notMissing” тебе даже аггрегация не поможет, только 2 выборки
Illia
понял, спасибо
Bogdan
Привет, как правильно делать $subtract между одним полем (total) и тем же полем (total), но из предыдущей записи (сорт по времени). Пример ниже, нужно выводить разницу цен (статистика) db.sales.insertMany([ { "_id" : 1, "item" : "abc", "price" : 10) }, { "_id" : 2, "item" : "jkl", "price" : 20) }, { "_id" : 999 "item" : «uhv», "price" : 28) }, ])
⁣⁣⁣⁣⁣⁣⁣⁣⁣B@zZ
Всем привет. Есть база mongo db. Отвалилась. И теперь не могу её запустить Вот такая инфа по команде mongo: MongoDB shell version v4.2.6 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb 2020-11-04T13:57:58.012+0200 E QUERY [js] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed: SocketException: Error connecting to 127.0.0.1:27017 :: caused by :: Connection refused : connect@src/mongo/shell/mongo.js:341:17 @(connect):2:6 Подскажите пожалуйста, куда копать? До этого работала абсолютно стабильно. Никаких изменений не вносилось. Отвалилась предположительно из-за падения сервера
Delonge1
Всем привет, может кто подсказать,access и refresh токены нужно хранить в localstorage или нет?
Анатолий
ну вот где удобней там и храните )
Анатолий
там где вам удобней, оба варианта в вашем случае подойдут
Анатолий
тогда нужен конкретный пример
Delonge1
тогда нужен конкретный пример
Если например создаётся интернет магазин и нужно хранить данные авторизованного пользователя
Анатолий
данные авторизованого пользователя обычно хоанят на сервере, на клиенте лишь токен авторизации
Анатолий
и да, его можно хранить где вам удобно тоже
Delonge1
Ну да,я про токены
Delonge1
А,окей)
Delonge1
Спасибо
Анатолий
локал сторедж "модно, стильно, молодежно" в куках можно хранить данные так чтоб клиент (только веб) не имел доступа к ним при хранении данных в куках (не данные авторизации) в некоторых странах нужно выводить дебильное сообщение что вы их храните итд
Анатолий
куки доступны с бека, локал сторедж нет
⁣⁣⁣⁣⁣⁣⁣⁣⁣B@zZ
Судя по всему она просто не запущена
Это я уже понял. Пытаюсь запустить. Но постоянно в забор въезжаю. Я начинающий. Знаний мало. Но сейчас критическая ситуация. Надо срочно поднять) Как ее запустить ума не приложу
⁣⁣⁣⁣⁣⁣⁣⁣⁣B@zZ
/var/log/mongodb/mongod.log - тут логи обычно
Там последняя запись датирована моментом падения (2е ноября) И этот файл лог кстати 9.9 гигабайт... Это нормально?
Анатолий
много логов
Анатолий
его можно переименовать и приложение новый создаст
Анатолий
как вы запускаете монгу?
⁣⁣⁣⁣⁣⁣⁣⁣⁣B@zZ
Анатолий
и что он в ответ говорит?
Анатолий
либо у вас в команде опечатка, либо он ругается при старте
Анатолий
systemctl start mongo db
mongo db - тут не опечатка с пробелом?
⁣⁣⁣⁣⁣⁣⁣⁣⁣B@zZ
Анатолий
Анатолий
И не ругается?
Анатолий
вот так
⁣⁣⁣⁣⁣⁣⁣⁣⁣B@zZ
⁣⁣⁣⁣⁣⁣⁣⁣⁣B@zZ
И не ругается?
Ругается)
Анатолий
⁣⁣⁣⁣⁣⁣⁣⁣⁣B@zZ
mongo db - тут не опечатка с пробелом?
Без пробела никакого ответа нет
⁣⁣⁣⁣⁣⁣⁣⁣⁣B@zZ
😔
Анатолий
systemctl start mongod
⁣⁣⁣⁣⁣⁣⁣⁣⁣B@zZ
systemctl start mongod
Без ответа
Анатолий
systemctl status mongod
Анатолий
а так?
⁣⁣⁣⁣⁣⁣⁣⁣⁣B@zZ
Анатолий
вот теперь смотри в логах что пишет
Наталья
всем доброго дня, побилась коллекция на диске, положила монгу, каким образом она могла побиться?
Viktar
всем доброго дня, побилась коллекция на диске, положила монгу, каким образом она могла побиться?
Звучит примерно так, у меня машина сломалась. Нужно больше подробностей. Что в логах пишут? Что произошло с сервером? И так далее
Наталья
STORAGE [conn450] WiredTiger error (-31802) [1604507784:548043][16763:0x7fa67bfa6700], file:collection-3168--5059658130979253572.wt, WT_CURSOR.next: __wt_block_read_off, 292: collection-3168--5059658130979253572.wt: fatal read error: WT_ERROR: non-specific WiredTiger error Raw: [1604507784:548043][16763:0x7fa67bfa6700], file:collection-3168--5059658130979253572.wt, WT_CURSOR.next: __wt_block_read_off, 292: collection-3168--5059658130979253572.wt: fatal read error: WT_ERROR: non-specific WiredTiger error
Наталья
STORAGE [conn450] WiredTiger error (0) [1604507784:547031][16763:0x7fa67bfa6700], file:collection-3168--5059658130979253572.wt, WT_CURSOR.next: __wt_bm_corrupt_dump, 135: {4755316736, 12288, 0xd24b3091}: (chunk 1 of 12): 00 00
Наталья
я совсем новичек в монге, поэтому может вопрос слишком простой, но хоть подскажите как профилировать базу чтобы понять что к этому привело, на всякий это secondary
Pan
как импортировать json в бд? сразу много файлов?
Дара
Всем привет. Кто-нибудь может подсказать как оптимизировать запрос для коллекций с 160м документов в монго? Использую MongoDB Driver C#. Использовал индексы, но все равно запрос медленный. Может быть я не правильно создал индексы. Может еще какой-нибудь способ есть для оптимизации? Кто сталкивался с таким?
Дара
опишите что делается в запросе
Используется Aggregation Framework, чтобы сделать поиск по 3 свойствам: var currentHourFilter = _filterBuilder.Gte(x => x.Timestamp, new BsonString(currentHour.ToString("yyyy-MM-ddTHH\\:mm\\:ss"))); var nextHourFilter = _filterBuilder.Lte(x => x.Timestamp, new BsonString(nextHour.ToString("yyyy-MM-ddTHH\\:mm\\:ss"))); var staffMatch = _filterBuilder.Eq(x => x.Data.r, "staff"); events.Match(currentHourFilter).Match(nextHourFilter).Match(staffMatch).Count().