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
Вопрос: как сделать так, чтобы статический метод не исполнялся сразу, только при вызове. Метод подключаю, как плагин
Daniil
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 шарде, и монга при поиске по ящику всегда понимала на каком?
Nick
Александр
Viktar
А юзер Ид уникален?
Александр
Они оба вполне себе уникальные идентификаторы, проблема только в том, что нужно искать по обоим этим полям, и нужно шардирование
Максим
VSH
у меня вопрос, если у меня 2 коллекции, POST и COMMENT, и в POST у меня ref:comment и допустим я удаляю этот POST, но существующие COMMENT не удаляются, нужно писать еще 1 запрос на удаление всех COMMENT к этому POST, точнее чего то чтобы удаляло автоматом всеx COMMENT к удаляному POST
Nick
VSH
Да
да нужно писать еще 1 запрос на удаление всех коментов или есть штото што само удалит коменты по типу primary, foregent key ?
Kenan
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 кто-нибудь использует/использовал? В него можно прицепить ванильный релиз СУБД или только фирменный?
Kenan
✙ Nikita
Привет, если я буду вставлять в массив объектов новые элементы, то я могу у них сам определить чему будет равен _id или монга сама принудительно сгенерирует новую айди?
Slava
✙ Nikita
спасибо
Viktar
Slava
Danil
Всем привет, подскажите как правильно загуглить?
Мне нужно подключится к удаленному серверу, по нашей внутренней сети. Как это можно осуществитЬ?
Viktar
Александр
Danil
ssh
Viktar
SSH? VPN?
Это немного разные вещи. Первый даёт доступ серверу, второй доступ в сеть
Dr
PMM на предыдущем месте работы ставил
Dr
Что имеете в виду под "прицепить..."?
Danil
Суть в том что я хочу чтобы приложение работало в нашей сети. Например в бразуре вводим ip 172.1.1.1:8888 и поподаем в приложение
Александр
Danil
На сервере я вроде как запустил простой сервер на express, а вот как к нему попасть с другого компьютера я хз
Александр
Александр
а, нет. В сети сервер уже запущен. Если нет каких-то запрещающих правил или фаервола, то по IP машины и порту должно быть доступно
Danil
Viktar
Похоже, не вы спрашивали)
Viktar
А задавали уточняющие вопросы)
Александр
да)
Александр
Создаётся что то вроде индекса с указанием что на какой ноде лежит. В документации это хорошо описано.
У меня тут про Shard key вопрос)
Я раздел доки прочитал, но всё равно не понял.
Есть юзеры, у каждого может быть привязан 1 или несколько email'ов. Там ещё всякая разная инфа может быть, но поиск только 1 документа по user_id, или 1 документа по email (уникальная строка).
Какой должен быть ключ/индекс?
{ user_id: 1, emails: 1} где user_id - целое число, emails - массив строк
как будет поиск по user_id работать понятно, но как по email, если я user_id ещё не знаю?
Danil
да)
Все оказалось проще:
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
Kenan
✙ Nikita
можете подсказать как обстоят дела в монге с точным хранением чисел (например до 5 цифр после запятой), есть встроенные уже для этого типы или лучше просто хранить строкой число а операции делать на стороне приложения?
yopp
✙ Nikita
ага, понял, и над ним можно те же $inc делать?
yopp