Харамбус
Я не читал фулл контекст, но это использование лукапа на ровном месте ничем не обосновано, если используется монгус(а я полагаю юзается) то лучше популейтом сделать
Нурлан
не знал про популейт
Харамбус
лукап это по теме монгодб, есть всеобщая рекомендация не использовать лукап если без него можно обойтись
Харамбус
нагружающая операция в целом
Харамбус
популейт работает на уровне моделей, производительнее
Нурлан
отдуши
Нурлан
не знаешь может ли сохраняться кеш если пользователь выйдет из сайта?
Нурлан
без редис,просто кеш
Харамбус
в браузере?!
Нурлан
да
Харамбус
ну да
Харамбус
если не очищать его
Харамбус
он останется
Харамбус
разве что если в настройках браузера включены какие то лимиты по ресурсам или времени
Semeon
Господа, такой вопрос. Как в MongoDB лучше всего вернуть общее кол-во документов в коллекции? Нужно просто число получить
Alexandrr
Господа, такой вопрос. Как в MongoDB лучше всего вернуть общее кол-во документов в коллекции? Нужно просто число получить
find().explain() .explain - возвращает информацию, посмотри на офф сайте, там есть число общее количество документов в коллекции но это будет очень медленно
Semeon
Вроде работает
Anonymous
Мне уже порекомендовали просто count()
"count" устарел. Надо использовать "countDocuments"
Eфим
всем привет, подскажите как выбрать записи с 10 по 20 например???
Nick
всем привет, подскажите как выбрать записи с 10 по 20 например???
$skip, $limit если в агрегации, и skip().limit() если файнд
Eфим
ок, спасибо за помощь
Eфим
использовал skip
Nick
Чет поплавило, не офсет а скип всетаки
Nick
Спасибо за бдительность
Semeon
Господа, можете подсказать, как в Postman отправить число по ключу? Пытаюсь это сделать, но приходит строка
Нурлан
?
Semeon
Тип number укажи в параметре
А в каком месте это указывается?
Vladimir
А в каком месте это указывается?
Переходишь во вкладку body и пишешь с типами уже
Semeon
Переходишь во вкладку body и пишешь с типами уже
Понял, спасибо! Но тут надо весь JSON описывать и вроде нельзя обращаться к конкретным ключам
Антон
В модели дата указана так type: Date, default: Date.now, }, добавляю в базу в таком виде date: new Date(row[12], Number(row[10]) - 1, row[11]) в атласе вижу вот такое 'date': { "$date": { "$numberLong": "1670011200000" } }, почему-то запрос выдает month: null $project: { month: { $month: { $toDate: "$date" } }, } в чем дело?
Антон
iso 8601
как добавить дату в таком виде? что указывать в схеме?
Харамбус
У тебя вроде по схеме проблем нет
Харамбус
Converts a value to a date. If the value cannot be converted to a date, $toDate errors. If the value is null or missing, $toDate returns null. The $toDate takes any valid expression.
Харамбус
Это про $toDate
Бобомурод
коллеги скажите пожалуйста, можно ли чем то похожим на db.myCollection.find({“text”}) искать слово “text” по всем полям всех записей на данном коллекшне ?
Харамбус
коллеги скажите пожалуйста, можно ли чем то похожим на db.myCollection.find({“text”}) искать слово “text” по всем полям всех записей на данном коллекшне ?
Или в эту сторону покопай db.things.find({$where: function() { for (var key in this) { if (this[key] === "bar") { return true; } } return false; }});
Харамбус
С $expr тоже типо такого можно
Харамбус
Из минусов это плохо по производительности бьет
Viktar
Ребята подскажите, нужен ли арбитр в реплике, где есть примари и только один секондари?
Viktar
Должно быть нечётное количество
я тоже так подумал, но меня смутила инфа из документации In some circumstances (such as when you have a primary and a secondary, but cost constraints prohibit adding another secondary), you may choose to add an arbiter to your replica set. An arbiter participates in elections for primary but an arbiter does not have a copy of the data set and cannot become a primary.
Egor
я тоже так подумал, но меня смутила инфа из документации In some circumstances (such as when you have a primary and a secondary, but cost constraints prohibit adding another secondary), you may choose to add an arbiter to your replica set. An arbiter participates in elections for primary but an arbiter does not have a copy of the data set and cannot become a primary.
Арбитр нужен как ещё один голос. Что будет, если скажем у тебя линк между двумя монгами пропадет, но апп будет иметь доступ к обеим? Они же оба в секондари упадут и не будет большинства голосов, чтоб стать праймари
Айуб
Всем хаюшки, mongodb 5 версия, когда включаю в конфиге security: enabled бэк не может подключиться почему так, знает кто?
M.K.
приветствую, есть такой вот запрос: db.command({"distinct":"items","key":"g1_5","query":{"_parent":"MongoDB\\BSON\\ObjectId(6238221bbcfadc76f204b8cb)","g1_6":2022}}) записей где-то 2млн, подскажите как правильно добавить индекс для ускорения поиска?
Alexey
Всех приветствую. Не подскажете, возможно ли в монге осуществить запрос, который попробую описать идейно словами ниже. Есть коллекция details, в которой могут находиться детали различных производителей. Я отобрал интересующие меня документы запросом. db.getCollection('details').find({ 'detail_type': 'non_original', '$or': [ {'files.non_original': {'$exists': true, '$ne': []}}, {'files.mix': {'$exists': true, '$ne': []}} ] }) И примером ответа будет документ следующего вида. { "detail_id" : "134227", "detail_type" : "non_original", "manufacturer" : "huco", "files" : { "mix" : [ { "filename" : "167_orum_20_001_2_0_20_mix", "ext" : "csv", "name" : "высоковольт.провода ком/кт", "price" : 1026.0 } ] }, "crosses" : [ { "manufacturer" : "chevrolet", "detail_id" : "96256437", }, { "manufacturer" : "opel", "detail_id" : "96518123", }, ] } Вопрос в том, можно ли как-то модифицировать мой первый запрос таким образом, чтобы была проверка, что в поле crosses производитель и деталь присутствовали бы в другом запросе, например таком: db.getCollection('details').find({ "detail_type" : "original", "files.mix": {"$exists": true} }) Плохо понимаю какими проверками и и операторами можно провернуть такое, агрегации, группировки или что-то еще. Буду очень признателен любым идеям.
Kirill
йй, что значит тип данных Schema.types.ObjectId в монгусе? Я юзаю sequelize, пытаюсь подобрать похожий тип)
Антон
У тебя вроде по схеме проблем нет
Тогда непонятно что мне делать с iso8601, если по схеме проблем нет. В моем случае не обрабатываются даты
Харамбус
Я кидал там выше что возвращает todate
Харамбус
Просто null очень подозрительно
Антон
Я кидал там выше что возвращает todate
Я выше кидал все что есть. Как выглядит схема, как выглядит формирование даты перед сохранением, что виду в компасе, какой запрос, что возвращает
Антон
'date': { "$date": { "$numberLong": "1670011200000" } }, Смущает как вижу в компасе Если для теста захардкодить $project: { month: { $month: { $toDate: { "$numberLong": "1670011200000"} } }, } То работает ок
Vadzim
в mongo можно как-то явно указать, что я выбираю все поля?
Vadzim
типа не просто find, а ещё указать типа find({'All'})
Харамбус
Посмотри про projection
Vadzim
Посмотри про projection
это я понимаю, что можно указать по типу {'password': 0}, а как тут указать что мне все нужны?
Vadzim
типа {'all': 1} - такого нет?
Николай
а зачем?)
Vadzim
мне так нужно, это долго объяснять, но в общем, чтобы костыль не писать, так было бы для меня проще
Eldar
Всем привет! Есть в монгодб данные point[2] с latitude and longitude (geospatial point_2dsphere). Как лучше всего мне это переделать в Choropleth Map? Спасибо
Харамбус
Харамбус
Я думаю это то что ты ищешь)
Харамбус
Просто второй аргумент пустой обьект передай
Vadzim
а зачем?)
а вообще, мне иногда не нужно одно поле с документа, то есть нужны все поля кроме одного, а иногда нужны все поля
Vadzim
Просто второй аргумент пустой обьект передай
а да, я разобрался, я None передаю и тогда всё ок, спасибо!
Morant
Здравствуйте, подскажите, пожалуйста, как в правильно и эффективно в поле искать подстроку в монге Первый способ, который я пробовал - через regex .*substring.* получается слишком долгий запрос Второй способ через полнотекстовый поиск с построением текстового индекса. Работает быстро, но ищет только по словам, а мне нужно именно каждое вхождение найти Может есть какое-то другое быстрое и удовлетворяющее задаче решение?
yopp
Здравствуйте, подскажите, пожалуйста, как в правильно и эффективно в поле искать подстроку в монге Первый способ, который я пробовал - через regex .*substring.* получается слишком долгий запрос Второй способ через полнотекстовый поиск с построением текстового индекса. Работает быстро, но ищет только по словам, а мне нужно именно каждое вхождение найти Может есть какое-то другое быстрое и удовлетворяющее задаче решение?
Поиск по подстроке в принципе сложная задача, так как подстроки очень дорого индексировать. К сожалению, для монги простой ответ «никак». Полнотекстовый индекс не поддерживает частичное совпадение по токену, только по его оригинальной словоформе. Нормализация происходит в момент обработки $text запроса, а дальше поиск по сути похож на поиск по multi-key индексу, с той разницей что «сортировка» будет по «коэффициенту совпадения» Если вы можете выделять нужные вам токены при записи, а это достаточно легко для иерархических строк, например FQDN, то эти токены можно хранить в индексируемом массиве. Если выделить подстроку при записи нельзя, то попробовать выделить префикс подстроки и записать её в индексируемый массив. В остальных случаях, дешевле использовать сторонний инструмент, который строит индексы через разновидности trie.
Morant
Поиск по подстроке в принципе сложная задача, так как подстроки очень дорого индексировать. К сожалению, для монги простой ответ «никак». Полнотекстовый индекс не поддерживает частичное совпадение по токену, только по его оригинальной словоформе. Нормализация происходит в момент обработки $text запроса, а дальше поиск по сути похож на поиск по multi-key индексу, с той разницей что «сортировка» будет по «коэффициенту совпадения» Если вы можете выделять нужные вам токены при записи, а это достаточно легко для иерархических строк, например FQDN, то эти токены можно хранить в индексируемом массиве. Если выделить подстроку при записи нельзя, то попробовать выделить префикс подстроки и записать её в индексируемый массив. В остальных случаях, дешевле использовать сторонний инструмент, который строит индексы через разновидности trie.
Спасибо огромное за развёрнутый ответ, читал про решение с разбиением строки на токены, но к сожалению, строки совсем не структурированы, буду рассматривать использование elasticsearch, так как он больше подходит для данной задачи
yopp
Не факт что ES даст лучшие результаты, но я в нём поверхностно разбираюсь. А какие подстроки вы ищете?