Nick
так он чисто json формат имеет
Dr
Сами запросы увы, нет
Dr
Монго-специфичных добавлений, ломающих json, есть
Nick
интересно какие
Nick
на ум только приходят кавычки, которые не обязательны вокруг названий полей
Dr
$date, например
Dr
Если я правильно понимаю
Dr
Или формат чисел
Nick
а чем он просто от json отличается?
Nick
прост острока
Dr
{ {$gte: new Date(1607936400002) } } JSON Валидатор от такого дохнет
Dr
Целиком запрос вот так выглядит: query: { $and: [ { ccRequest: true }, { $or: [ { $and: [ { syndicationDetails.domestic: { $exists: true } }, { syndicationDetails.domestic.cms: { $exists: true } } ] }, { $and: [ { syndicationDetails.deportes: { $exists: true } }, { syndicationDetails.deportes.cms: { $exists: true } } ] }, { $and: [ { syndicationDetails.soccerfc: { $exists: true } }, { syndicationDetails.soccerfc.cms:{ $exists: true } } ] }, { $and: [ { syndicationDetails.cricinfo: { $exists: true } }, { syndicationDetails.cricinfo.cms: { $exists: true } } ] } ] }, { $or:[ { $and: [ { syndicationDetails.domestic.threeplay: { $exists: true } }, { syndicationDetails.domestic.threeplay.responseDate: { $exists: true } }, { syndicationDetails.domestic.threeplay.responseDate: { $gte: new Date(1607936400002) } } ] }, { $and: [ { syndicationDetails.deportes.threeplay: { $exists: true } },{ syndicationDetails.deportes.threeplay.responseDate: { $exists: true } }, { syndicationDetails.deportes.threeplay.responseDate: { $gte: new Date(1607936400002) } } ] }, { $and: [ { syndicationDetails.soccerfc.threeplay: { $exists: true } }, { syndicationDetails.soccerfc.threeplay.responseDate: { $exists: true } }, { syndicationDetails.soccerfc.threeplay.responseDate: { $gte: new Date(1607936400002) } } ] }, { $and: [ { syndicationDetails.cricinfo.threeplay: { $exists:true } }, { syndicationDetails.cricinfo.threeplay.responseDate: { $exists: true } }, { syndicationDetails.cricinfo.threeplay.responseDate: { $gte: new Date(1607936400002) } } ] }, { $and: [ { ccDueDate: { $gte: new Date(1607936400002) } }, { ccDueDate: { $lte: new Date(1607940900002) } } ] } ] } ] } planSummary: COLLSCAN ntoreturn:0 ntoskip:0 nscanned:0 nscannedObjects:1663210 keyUpdates:0 writeConflicts:0 numYields:14858 nreturned:4 reslen:22216 locks:{ Global: { acquireCount: { r: 29718 }, acquireWaitCount: { r: 24 }, timeAcquiringMicros: { r: 42637 } }, Database: { acquireCount: { r: 14859 } }, Collection: { acquireCount: { r: 14859 } } } 208726ms
Dr
Лично у меня от такого глаза сразу ломаются
Nick
Целиком запрос вот так выглядит: query: { $and: [ { ccRequest: true }, { $or: [ { $and: [ { syndicationDetails.domestic: { $exists: true } }, { syndicationDetails.domestic.cms: { $exists: true } } ] }, { $and: [ { syndicationDetails.deportes: { $exists: true } }, { syndicationDetails.deportes.cms: { $exists: true } } ] }, { $and: [ { syndicationDetails.soccerfc: { $exists: true } }, { syndicationDetails.soccerfc.cms:{ $exists: true } } ] }, { $and: [ { syndicationDetails.cricinfo: { $exists: true } }, { syndicationDetails.cricinfo.cms: { $exists: true } } ] } ] }, { $or:[ { $and: [ { syndicationDetails.domestic.threeplay: { $exists: true } }, { syndicationDetails.domestic.threeplay.responseDate: { $exists: true } }, { syndicationDetails.domestic.threeplay.responseDate: { $gte: new Date(1607936400002) } } ] }, { $and: [ { syndicationDetails.deportes.threeplay: { $exists: true } },{ syndicationDetails.deportes.threeplay.responseDate: { $exists: true } }, { syndicationDetails.deportes.threeplay.responseDate: { $gte: new Date(1607936400002) } } ] }, { $and: [ { syndicationDetails.soccerfc.threeplay: { $exists: true } }, { syndicationDetails.soccerfc.threeplay.responseDate: { $exists: true } }, { syndicationDetails.soccerfc.threeplay.responseDate: { $gte: new Date(1607936400002) } } ] }, { $and: [ { syndicationDetails.cricinfo.threeplay: { $exists:true } }, { syndicationDetails.cricinfo.threeplay.responseDate: { $exists: true } }, { syndicationDetails.cricinfo.threeplay.responseDate: { $gte: new Date(1607936400002) } } ] }, { $and: [ { ccDueDate: { $gte: new Date(1607936400002) } }, { ccDueDate: { $lte: new Date(1607940900002) } } ] } ] } ] } planSummary: COLLSCAN ntoreturn:0 ntoskip:0 nscanned:0 nscannedObjects:1663210 keyUpdates:0 writeConflicts:0 numYields:14858 nreturned:4 reslen:22216 locks:{ Global: { acquireCount: { r: 29718 }, acquireWaitCount: { r: 24 }, timeAcquiringMicros: { r: 42637 } }, Database: { acquireCount: { r: 14859 } }, Collection: { acquireCount: { r: 14859 } } } 208726ms
берем кусок от query: до planSummary: и там чисто ваш запрос и он обычный json
Dr
Первая часть согласен, вторая всё же нет. Нету в JSON формате поддержки строки как "new Date" обьекта
Dr
Регекспом можно обработать, конечно, но наверняка же уже есть готовые инструменты для этого
Dr
Всем спасибо, уже сам нашёл. В данном конкретном случае можно просто из самого mongo shell посмотреть запросы в удобном виде: > db.system.profile.find().pretty()
Kenan
Вопрос: как сделать так, чтобы статический метод не исполнялся сразу, только при вызове. Метод подключаю, как плагин
Kenan
Он и не исполняется если его не вызвать
обнаружил, что я криво написал плагин....
Dima
Доброго времени суток. Столкнулся с такой проблемой. Пытаюсь сделать репликацию с удалённой базой данных. Чёт не выходит
Dima
{"t":{"$date":"2020-12-17T22:33:04.443+03:00"},"s":"I", "c":"CONTROL", "id":23285, "ctx":"main","msg":"Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'"} {"t":{"$date":"2020-12-17T22:33:04.451+03:00"},"s":"W", "c":"ASIO", "id":22601, "ctx":"main","msg":"No TransportLayer configured during NetworkInterface startup"} {"t":{"$date":"2020-12-17T22:33:04.451+03:00"},"s":"I", "c":"NETWORK", "id":4648601, "ctx":"main","msg":"Implicit TCP FastOpen unavailable. If TCP FastOpen is required, set tcpFastOpenServer, tcpFastOpenClient, and tcpFastOpenQueueSize."}
Dima
при этом, когда пытаюсь использовать указанный флаг --sslDisabledProtocols none, бд ругается и говорит что он deprecated
Dima
гугление не помогло
Александр
Всем привет, пытаюсь выбрать правильный ключ шардирования. У каждого пользователя есть user_id (int), и несколько ящиков (string). Поиск возможен только по этим 2 полям. Название ящика - уникально. Какой должна быть структура документа в коллекции, и каким должен быть ключ шардирования чтобы данные одного юзера оставались на 1 шарде, и монга при поиске по ящику всегда понимала на каком?
Александр
ящики могут быть одинаковыми у разных юзеров?
Нет, ящики уникальные по всей коллекции.
Viktar
А юзер Ид уникален?
Александр
А юзер Ид уникален?
И юзер ид уникален
Александр
Они оба вполне себе уникальные идентификаторы, проблема только в том, что нужно искать по обоим этим полям, и нужно шардирование
Максим
Максим
так он чисто json формат имеет
Всё таки объект и джсон в жс это разные вещи.
VSH
у меня вопрос, если у меня 2 коллекции, POST и COMMENT, и в POST у меня ref:comment и допустим я удаляю этот POST, но существующие COMMENT не удаляются, нужно писать еще 1 запрос на удаление всех COMMENT к этому POST, точнее чего то чтобы удаляло автоматом всеx COMMENT к удаляному POST
VSH
Да
да нужно писать еще 1 запрос на удаление всех коментов или есть штото што само удалит коменты по типу primary, foregent key ?
Chern
всем привет, а как можно _id конвертнуть в дату ? db.users.find({}, {"_id": 1}).getTimestamp() — Выдает ошибку java.lang.Exception: TypeError: (intermediate value).users.find(...).getTimestamp is not a function
Андрей
Ку. Percona Monitoring and Management кто-нибудь использует/использовал? В него можно прицепить ванильный релиз СУБД или только фирменный?
✙ Nikita
Привет, если я буду вставлять в массив объектов новые элементы, то я могу у них сам определить чему будет равен _id или монга сама принудительно сгенерирует новую айди?
✙ Nikita
спасибо
Slava
Ку. Percona Monitoring and Management кто-нибудь использует/использовал? В него можно прицепить ванильный релиз СУБД или только фирменный?
вроде бы можно любой, пробовал довольно давно, но не припомню, чтоб какие-то проблемы были
Александр
Тагда вам ничего не мешает сделать шарды по этим полям.
Я всё-таки не пойму, если я ищу документ по ящику. Как монга поймёт на каком шарде его искать? Какой должен быть ключ?
Danil
Всем привет, подскажите как правильно загуглить? Мне нужно подключится к удаленному серверу, по нашей внутренней сети. Как это можно осуществитЬ?
Viktar
Я всё-таки не пойму, если я ищу документ по ящику. Как монга поймёт на каком шарде его искать? Какой должен быть ключ?
Создаётся что то вроде индекса с указанием что на какой ноде лежит. В документации это хорошо описано.
Danil
ssh
Viktar
SSH? VPN?
Это немного разные вещи. Первый даёт доступ серверу, второй доступ в сеть
Dr
PMM на предыдущем месте работы ставил
Dr
Что имеете в виду под "прицепить..."?
Danil
Суть в том что я хочу чтобы приложение работало в нашей сети. Например в бразуре вводим ip 172.1.1.1:8888 и поподаем в приложение
Александр
Это немного разные вещи. Первый даёт доступ серверу, второй доступ в сеть
да, но я вопрос не понял) может вообще и то и то нужно
Андрей
Что имеете в виду под "прицепить..."?
В голую систему мониторинга подключить экземпляр СУБД
Danil
На сервере я вроде как запустил простой сервер на express, а вот как к нему попасть с другого компьютера я хз
Александр
а, нет. В сети сервер уже запущен. Если нет каких-то запрещающих правил или фаервола, то по IP машины и порту должно быть доступно
Danil
https://habr.com/ru/post/331348/ я так понял вам это нужно
Очень похоже, заранее спасибо, буду учить)
Viktar
да, но я вопрос не понял) может вообще и то и то нужно
Вполне возможно. Вы дали мало информации для точного ответа. Думаю администратор даст вам точный ответ основанный на инфраструктуре. Все остальные могут лишь гадать
Viktar
Похоже, не вы спрашивали)
Viktar
А задавали уточняющие вопросы)
Александр
да)
Dr
В голую систему мониторинга подключить экземпляр СУБД
Ну мы так и делали. Развернули PMM и добавили в ней подключения к существующей Mongo. А как иначе-то? :-о
Александр
Создаётся что то вроде индекса с указанием что на какой ноде лежит. В документации это хорошо описано.
У меня тут про Shard key вопрос) Я раздел доки прочитал, но всё равно не понял. Есть юзеры, у каждого может быть привязан 1 или несколько email'ов. Там ещё всякая разная инфа может быть, но поиск только 1 документа по user_id, или 1 документа по email (уникальная строка). Какой должен быть ключ/индекс? { user_id: 1, emails: 1} где user_id - целое число, emails - массив строк как будет поиск по user_id работать понятно, но как по email, если я user_id ещё не знаю?
Андрей
Ну мы так и делали. Развернули PMM и добавили в ней подключения к существующей Mongo. А как иначе-то? :-о
Ну хз. На сайте я не увидел никаких пререквизитов вообще поэтому решил спросить. Вдруг там какая-нибудь фирменная фича гвоздями прибита как связующее звено 🙈
Danil
да)
Все оказалось проще: app.listen(port, 'ip-сервера', () => { console.log(Example app listening at http://localhost:${port}) }) И с другой машины я смог зайти по этому айпишнику. За статью в любом случае спасибо))
Александр
Все оказалось проще: app.listen(port, 'ip-сервера', () => { console.log(Example app listening at http://localhost:${port}) }) И с другой машины я смог зайти по этому айпишнику. За статью в любом случае спасибо))
да, об этом я тоже писал выше) Я не правильно вопрос понял, думал надо получить доступ к серверу запущенному в другой локальной сети.
Danil
Pan
есть такая структура и такой запрос где там : unexpected? ожидаю, что мне вернет документы, где _id - ид user, products: массив уникальных продуктов, которые были с user
Pan
Pan
прикол в логах пишет два :, а там одно шо за
Pan
все понял это прога тормозит
Pan
Chern
find возвращает курсор. Переведи в массив и оттуда достань ObjectId
А если выполнять через GUI datagrip/dbeaver от туда не как ?
Kenan
А если выполнять через GUI datagrip/dbeaver от туда не как ?
через них с монгой не работал, поэтому подсказать не могу
✙ Nikita
можете подсказать как обстоят дела в монге с точным хранением чисел (например до 5 цифр после запятой), есть встроенные уже для этого типы или лучше просто хранить строкой число а операции делать на стороне приложения?
✙ Nikita
ага, понял, и над ним можно те же $inc делать?