Nick
Ощущение что вы сделали три матч стейджа, вместо одного
Nick
Весь получившийся пайп для агрегации
Дара
и что это за язык/драйвер
https://docs.mongodb.com/manual/aggregation/
Nick
имею ввиду на чем текст что выше
Nick
Вот так вот понятно?
в этом и рпоблема, что 3 матча. Упакуйте в один с использованием $and
Nick
и тогда индекс начнет нормально работать
Nick
но сразу скажу, что если под выборку попадает много доков, то магии не случится
Nick
с диска всеравно их читать придется
Nick
кстати не знаю как там в C#, но стоит проверить что count выглядит как добавление соответствующего стейджа $count
Nick
count должен проходить как стейдж $count?
да, иначе это похоже на метод на итераторе, который будет вытаскивать все доки из базы
Nick
Вот так вот понятно?
и проджект надо поставить после матчей
Дара
Попробуйте 3 матч поставить первым
Вы имеете ввиду третий матч?
Pan
как я могу взять первый элемент поля loc? чтобы проверить больше ли оно указанного значения?
Pan
ок, db.zips.find({ loc: [ { $elemeMatch: { $gt: 50 }} ] }) - выберет все документы, в которых один из элементов loc больше 50, а как проверять именно первый?
Анатолий
на сайте монги очень хороший мануал
Pan
нашел, спасибо
Andrey
как я могу взять первый элемент поля loc? чтобы проверить больше ли оно указанного значения?
А зачем, если не секрет. В монге же есть геоиндекс. 2dsphere кажется. Как раз с координатами.
Pan
А зачем, если не секрет. В монге же есть геоиндекс. 2dsphere кажется. Как раз с координатами.
да просто учу, смотрю что есть это такая бд, а была бы другая, там бы этот геоиндекс не подошел))
Pan
Геоиндекс сейчас во многих
та я имею ввиду, если бы там не локация была, а просто массив какой-то
Pan
шо ж поделать
Orange
有人可以教俄语么?
Orange
что вы сказали?
04MTTM07
Да.
Orange
Я тоже использую программы для перевода!
Orange
Есть ли способ выучить русский язык?
04MTTM07
В сообществе "mongodb russia"? Тут можно про монгодб спросить :) Есть множество разных тематических чатов, если хочешь пообщаться с русскоговорящим сообществом.
Dima
Всем привет. Столкнулись со странной проблемой. Есть один документ со вложенным в него другим документом. При добавлении поля во вложенный и копировании всего документа иногда исчезает одно поле во вложенном. Уже 3 дня пофиксить пытаемся. Есть идеи, из-за чего это может происходить?
Анатолий
из-за того что вы перезаписываете вложеный документ
Dima
да не. как раз-таки происходит именно обновление, а не перезапись
04MTTM07
При добавлении поля во вложенный док не меняется id главного дока?
Dima
не должен
Анатолий
да не. как раз-таки происходит именно обновление, а не перезапись
Вы перезаписываете вложеный документ не всеми полями думая что он изменит точечно поля которые вы указали, а по факту вы заменяете вложенный документ полностью
Dima
используется метод findByIdAndUpdate()
Анатолий
используется метод findByIdAndUpdate()
Важен не метод и данные которые вы в него суете
Анатолий
Покажите как именно делаете апдейт
Dima
public async disableCameraById(cameraId: string, user: IUserDocument | null = null): Promise<ICameraDocument | null> { const camera = await this.cameraDatabaseService.getObjectById(cameraId); if (!camera || !camera.session) { return camera; } camera.session.actions.finish = { user: user, time: Date.now(), }; await this.historyDatabaseService.addObject({ reportId: null, camera: camera }); camera.session = null; for (const channel of camera.channels) { channel.preset = null; } const updatedCamera = await this.cameraDatabaseService.editObjectById(cameraId, camera); return updatedCamera; }
Nick
и какое поле ломается?
Nick
и что делается внутри editObjectById
Анатолий
То которое не учавствует в апдейте, вангую
Анатолий
findByIdAndUpdate()
А какое поле исчезает?
Dima
самое первое
Dima
session создаётся во время работы программы
Dima
в ней хранится 2 поля
Dima
в некоторые, нам неизвестные, моменты. пр добавлении второго поля, первое, как будто, затирается последним
Dima
Анатолий
Тоесть вы достаете обьект камера, в нем есть поле сессия, которое вы изменяете, а после сохранения поля сессия вообще нет?
Анатолий
в некоторые, нам неизвестные, моменты. пр добавлении второго поля, первое, как будто, затирается последним
Я на всякий случай спрошу Вы вкурсе что апдейт поддокументов в монго идет примерно так «doc.subdoc.field”: 123 Иначе если предоставить не все данные в subdoc при обновлении те которых не будет в апдейте удалятся?
Анатолий
поподробнее пожалуйста
https://stackoverflow.com/questions/5646798/mongodb-updating-subdocument
Анатолий
Вопрос не совсем ваш, но суть апдейта покажет наглядно
Дара
У меня вопрос. Если в запроса два $match, то index будет рабоать два раза для каждого $match?
Nick
скорее всего только на первом
Nick
чтобы точнее узнать надо эксплейном пройтись
Анатолий
да, на первом, второй уже банально по массиву будет идти
Dee
Всем привет! Пытаюсь выполнить кастомный search, игнорирую null переменные. Чтобы по ним поиск не происходил, есть запрос: $and: [ {$or : [ { $where: '?0 == null' } , { a : ?0 }]}, {$or : [ { $where: '?1 == null' } , { b : ?1 }]}, {$or : [ { $where: '?2 == null' } , { c : ?2 }]} ] во-первых, он корректный? Во-вторых, насколько это производтельно правильно. Я прочитал, что where будет выполнять условие для каждого документа. А я бы хотел, чтобы поиск шел только для тех, где значения динамические != null и поиск был только по ним, а не по каждлому документу, выполняя where
Dee
?0 ?1 ?2 == someField1 someField2 someField3 которые динаически задаются и могут быть == null
Nick
и тем более от where
Dee
сразу отказывайтесь от динамики
у меня этот native code используется в коде
Nick
тогда будет долго и медленно