Nick
{ $exists: false } покрывает только кейс с undefined
не обязательно, underfined может быть таким же значением как и любое другое
Nick
тип 6 https://docs.mongodb.com/manual/reference/operator/query/type/
Nick
формально exists првоеряет именно наличие поля, какое значение внутри ему не инетересно
Denys
вы явно задаете значение полю равное undefined?
нет, я его в некоторых кейсах не передаю, поэтому он у меня udefined
Nick
т.е. вы когда в базе смотрите, то у вас там прямо так и сохраняется undefined? под просмотром я имею ввиду не в коде, а через сторонне чтонить по типу монгошела, компаса и т.п.
Semyon V
судя по всему - нет
Semyon V
просто нет такого ключа совсем?
Nick
да оно проверяет именно наличие ключа, собственно поэтому v: null так же считается существующим
Anonymous
Всех приветствую
Anonymous
У кого либо был опыт использования mongoDB в сфере децентрализованных и / или распределенных приложений? И второй вопрос - кто что посоветует почитать по этому поводу?
Denys
т.е. вы когда в базе смотрите, то у вас там прямо так и сохраняется undefined? под просмотром я имею ввиду не в коде, а через сторонне чтонить по типу монгошела, компаса и т.п.
нет, в базе у меня есть это свойство, просто когда ищу эту запись, в одном случае я ищу по 3-м параметром, в другом по 2-м и это я делаю через один метод, поэтому 3-е свойство может бытб не указано
Joseph
ребят а можно как то в массиве найти именно последовательные вхождения если я передал [1,2] в качестве входного массива , то он мне находил только те елементы коллекции где идет именно 1 и 2 последовательно а не просто включены в массив
Joseph
нормальных средств для этого нет
:( А какие есть варианты
Nick
делать на стороне софта
Joseph
делать на стороне софта
Очень грустно , я хотел сделать именно на стороне базы так как это штука будет часто и много данных обрабатывать
Nick
тогда меняйте струтуру данных, чтобы ваш кейс было удобно обрабатывать
Joseph
и если делать все эти переборы на js то это будет сильно просаживать все
Joseph
Мб как то извратится через агрегатную функцию можно
Nick
Мб как то извратится через агрегатную функцию можно
можете попробовать, но это будет очень печально, т.к. вам нужно будет проверять поданную пару со всеми парами, полученными из всех документов. мало того что вам какимто образом нужно будет получать эти пары, так и их количество может быть досточно большим, чтобы грузить монгу
Nick
если хочется поиграться, то начните с шага, где получите пары
Nick
как много элементов в массиве может быть?
Nick
и как много доков будут иметь оба элемента в масссиве но не обязательно по порядку?
Nick
и если не секрет, то расскажи что вообще за данные, какая у них природа и собственно почему нужно именно пары детектить
Joseph
как много элементов в массиве может быть?
немного , у меня есть сущность маршрут (их дохрена) 1000 сейча .. и плодят их быстро .. предсказать сколько их будет всего сложно , у каждого маршрута есть массив с контрольными точками (их как правило до 20 штук) и вот как раз по ним надо будет искать
Nick
а почему не на графах?
Joseph
и если не секрет, то расскажи что вообще за данные, какая у них природа и собственно почему нужно именно пары детектить
Есть маршруты(routes) .. ну просто маршруты по которым кто то двигается у каждого маршрута есть контрольные точки (wayPoints) это массив в каждом элементе контрольной точки содержится метка это в свою очередь ObjectId
Joseph
И когда меняется растояние между метками мне надо запускать механизм пересчета растояния в маршрутах
Joseph
тем самым я имею 2 метки и мне надо найти только те маршруты которые включают в себя 2 подряд идущие метки
Nick
сами эти метки есть гдето еще в одной коллекции, и уже оттуда могут переиспользоватсья?
Joseph
Но они спользуются только в коллекции Routes
Joseph
разные маршруты могут состоять из одних и тех же меток только в разной последовательности
Joseph
а почему не на графах?
Граф уже миллион лет не юзал .. а уж темболее в продакшен , там вообще ни разу
Nick
пока мне видится это почти идеальным решением добавить еще одну сощность "грани", которые содержат в себе ваше расстояние и доп инфу связанную с отрезком пути. дальше в маршруте вы уже храните эти набор этих кусков и на стороне софта гарантируете, что они образуют цепочку
Nick
тогда вы сможете достточно сильно упростить себе жизнь
Nick
и докучи есть вот такая штукаhttps://docs.mongodb.com/manual/reference/operator/aggregation/graphLookup/
Joseph
по сути что и грани
Joseph
они показывают расстояние между 2 метками
Joseph
Joseph
Пример метки
Joseph
Пример маршрута
Nick
дальше мое имхо, у вас неправильно структурированы данные, нужно чтото такое: маршрут состоит из дуг дуги состоят из точек начала и конца дуга знает о своей длине, точка об этом не должна знать. точка может знать какие дуги из нее выходят и какие приходят (если они направленные) маршрут может иметь агрегированную инфомрацию по участкам
Nick
в ашем же случае получает что точка знает много, и маршрут знает много, но между ними связи почти нет
Joseph
Как это бывает .. крайне не последовательно
Nick
если вы говорите, что данных 1000, то ничего ен мешает просто все переделать
Joseph
если вы говорите, что данных 1000, то ничего ен мешает просто все переделать
Кодовая база , которую придется переписать . А так просто это не получится
Nick
ничего не мешает вам сделать это рядом и переписывать постепенно
Nick
для начала нужно будет только сделать создание дуг и заполнение отедльного массива, параллельно с текущим. у вас будет и старый вариант и новый
Nick
как раз вашу текущую задачу вы сможете реализовать уже на новом варианте.
Nick
в этом как раз и преимущество nosql, где нет жесткой схемы и софту на самом деле необязателньо знать что там чтото начало меняться
Joseph
Спасбо большое , сейчас буду думать как это донести до руководства
Yʉri 🇺🇦
Кричу
Gor
@dd_bb @yatoba
Gor
@pragus
Nick
В полчетвертого конечно призывать жестоко
Gor
:) йа не сплю:)
Anonymous
Сам отрубаюсь за компом
Kozimjon
ребят, серв на centos - куда сохраняется файл экспорта? спасибо большое заранее
Oleg
--out movies - это каталог где сохранились bsjon-ы
Oleg
там два файла, мета и данные
Kozimjon
--out movies - это каталог где сохранились bsjon-ы
а где эта папка? вот гугл говорит что в директории /data/db/ - но где эта директория data?
Oleg
в "текущем каталоге"
Oleg
там где запускаешь утилитку
Kozimjon
в "текущем каталоге"
походу нашел))) спасибо большое
Oleg
можно написать не относительный (movies), а полный путь. ( /tmp/movies ) - тогда будет в /tmp/movies
Kozimjon
можно написать не относительный (movies), а полный путь. ( /tmp/movies ) - тогда будет в /tmp/movies
понял, спасибо еще раз))) просто я не на бэке - потею за другого так сказать
Maxim
Посоветуйте, как лучше организовать БД. Есть пользователи с их id и настройками. У каждого пользователя помимо этого есть коллекция тасков, которые по сути - отдельный документ (описание, напоминания, заметки етс). Как эффективнее всего будет связать это дело?
Maxim
Уже пробовал сделать в каждом документе сделать массив тасков, чтобы хранить всё вместе, но тогда затрудняется работа с тасками. Стоит хранить их в отдельной коллекции, ссылаясь на _id или user_id?
Андрей
Связь many to one
Андрей
user_id в task положи
Maxim
Связь many to one
Окей, спасибо