Cyclone
Привет.
Модель вида
[{id: 123, subscriptions: ["aa", "bb"]},
{id: 124, subscriptions: ["cc", "dd"]}]
Надо найти все записи, у которых любой элемент subscriptions содержится в строке-параметре.
Сделал так:
db.subscriptions.aggregate( [
{ $unwind : "$subscriptions" },
{
$match: {
$expr: {
$regexMatch: {
input: "hellothere dear customers",
regex: "$subscriptions"
}
}
}
}
]
)
В java к удивлению нет метода Filters.regexMatch - написал вместо него new Document.
List<Bson> pipeline = Arrays.asList(
Aggregates.unwind("$subscriptions"),
Aggregates.match(
Filters.expr(
// почему нет Filters.regexMatch ?
new Document("$regexMatch",
new Document("input", inputString)
.append("regex", "$subscriptions")
)
)
)
);
subscriptionsCollection.aggregate(pipeline).into(..)
Можно как-то попроще?
Вроде, ещё $elemMatch подходит, но я не понимаю, как его использовать в данной ситуации.
Y
День добрый, подскажите по примеру из документации, мы соединили две коллекции через lookup, теперь у меня есть необходимость конечный результат по какому-нибудь полю отсортировать, которое есть в inventory_docs, как это сделать?
https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/
Nick
Y
Y
Но кажется нашел ответ на свой вопрос здесь https://www.mongodb.com/community/forums/t/how-to-efficiently-lookup-joining-table-and-sort-by-that-data/204261 нужно пробовать
🔊Sound
Доброго времени! Может кто помочь включить сверку базы mongo при выгрузке командой рефреш?
Раньше было как на скрине 1, а теперь просто папками лупит и даже не сверяет есть повтор или нет.
🔊Sound
Nick
Nick
🔊Sound
Тут наверное больше дело не в рефреше, а в том что команда drop удаляет материал на фронте и обрывает связь с базой метаданных, т.к при выгрузке не идёт сверка есть это или нет, оно штампует дубли.
🔊Sound
Может кто посмотреть из мастеров? Не бесплатно.
🔊Sound
рефреш каким боком к монге относится?
Может дело не в полном запуске базы mongo?
После перезагрузки дедик сервера я делал только: pm2 start app.js
Может идёт ещё какая то команда на базу метаданных?
Nick
🔊Sound
Может кто посмотреть из мастеров? Не бесплатно.
Veaceslav
Всем привет, господа и дамы, прошу подсказать возможные решение такой вот проблемы...
Есть значит коллекция на 65к записей, выполняю выборку в которой есть $or с несколькими $gte и $lte по одному Number полю (хотя там по факту я храню timestamp), так вот я обнаружил очень странное (как минимум для меня) явление. Профайлер запроса говорит что от использует 70 документов для обработки и что интересно, если разница между $gte значением и $lte значением больше чем (3 часа) - время обработки запроса сразу взлетает с ~80ms до ~350ms.
Вот пример запроса:
{
"active": true,
"ap_userId": {
"$ne": "b1"
},
"companyId": "65fc813af50da7b6cec4b09d",
"ap_timestamp": {
"$gte": 1718524531236,
"$lte": 1718579977834
},
"$or": [
{
"ap_vehicle.ap_id": "a1",
"ap_timestamp": {
"$gte": 1718524531236,
"$lte": 1718524541383
}
},
{
"ap_vehicle.ap_id": "a2",
"ap_timestamp": {
"$gte": 1718524541383,
"$lte": 1718524557422
}
}
]
}
Nick
Всем привет, господа и дамы, прошу подсказать возможные решение такой вот проблемы...
Есть значит коллекция на 65к записей, выполняю выборку в которой есть $or с несколькими $gte и $lte по одному Number полю (хотя там по факту я храню timestamp), так вот я обнаружил очень странное (как минимум для меня) явление. Профайлер запроса говорит что от использует 70 документов для обработки и что интересно, если разница между $gte значением и $lte значением больше чем (3 часа) - время обработки запроса сразу взлетает с ~80ms до ~350ms.
Вот пример запроса:
{
"active": true,
"ap_userId": {
"$ne": "b1"
},
"companyId": "65fc813af50da7b6cec4b09d",
"ap_timestamp": {
"$gte": 1718524531236,
"$lte": 1718579977834
},
"$or": [
{
"ap_vehicle.ap_id": "a1",
"ap_timestamp": {
"$gte": 1718524531236,
"$lte": 1718524541383
}
},
{
"ap_vehicle.ap_id": "a2",
"ap_timestamp": {
"$gte": 1718524541383,
"$lte": 1718524557422
}
}
]
}
вооружайтесь explain(executionStats)
Александр
Товарищи, подскажите как выполнить определенный код пайплайна (lookup например) только при условии что определенное поле текущего документа равно конкретному значению. Возможно ли вообще такое.
Александр
У меня есть коллекция событий, я хочу по типу события дополнить сам документ события при выполнении выборки. Если тип такой-то, то значит у этого события есть поле some_id, указывающее на другую коллекцию, из которой я хочу забрать еще пару полей.
Nick
Александр
Виталий
Подскажите со следующим вопросом
Хочу сделать аномально большие таймауты для монгиДБ локально, для того, чтобы немного её поломать.
Идея заключается в том, что
- кидаю данные на мастер-ноду, которые выходят за максимальный размер оплога - успеваю её(ноду) выключить до того момента, как данные успеют отправиться к другим нодам.
- после чего пишу (другие) данные на оставшиеся ноды
- и вновь включаю первичную ноду
хочу потерять данные для { writeConcern: 1 } - и не потерять для { writeConcern: majority }
yopp
Виталий
yopp
смысл majority именно в том чтоб избежать ситуации как в шаге 3
yopp
для клиенто вв такой ситуации обычно достаточно сделать retry операции после того как они потеряют соединение с праймари и драйвер переподключится уже после выборов с новым cluster view
Y
Добрый день, подскажите, пожалуйста, почему вот такая штука не возвращает записи, разве условие ложно?
Y
{'$and': [{'_id': {'$gte': ObjectId('666642000000000000000000')}}, {'_id': {'$lte': ObjectId('666642000000000000000000')}}]}
Y
Иными словами, чтобы было проще
{'$and': [{'_id': {'$gte': 123}}, {'_id': {'$lte': 123}}]} где точно есть _id = 123 почему то не возвращает такие записи
Nick
Y
какой значени _id сейчас
Не понял вопроса. Это вымышленный пример, запись с таким id есть.
Просто если поменять правый конец на 124, то вернуться записи с id = 123, а если не менять ничего не возвращается, хотя там не строго больше меньше стоит
Y
я не понимаю, почему так
Nick
Y
Очень странно, конечно.
У меня в моем случае не работает...
Nick
Y
Образ монги 7.0.4
Использую вот эту библиотеку
https://motor.readthedocs.io/en/stable/api-asyncio/asyncio_motor_collection.html
Виталий
Nick
Y
выполните запрос из монгошела стандартного
Кажется понял свою проблему, работает корректно, скорее всего
Мне на самом деле нужна фильтрация по датам, у _id его дата создания сидит внутри, а даты на фильтре я генерирую сам. Видно, что _id на самом деле больше, и поэтому если сделать фильтр 10.06.24 - 10.06.24 то он туда справедливо не попадет. Видимо, мой подход где-то некорректный
Nick
Y
не используйте даты в _id
Правильно понимаю, что это плохая практика ориентироваться на дату, которая хранится в _id, а лучше ее в момент создания документа писать отдельным атрибутом, чтобы вот потом такой неприятной истории не было?
Max
Коллеги, всем привет)
Подскажите, пожалуйста, как составить корректный запрос в базу, чтобы он выполнил сортировку по таким документа, где итоговое значение true?
"enable_in_navigations": {
"moscow": {
"pervomayskaya": true,
"kurskaya": false
}
}
Max
Max
Max
Max
Буду очень благодарен за помощь)
Nick
Max
Сарапулов
Доброго всем дня. может кто то сталкивался с такой пробелмой.
Есть несколько кластеров. 2 ноды и арбитр (primary + secondary + arbitr)
Если отпадывает primary сервер(машина полностью была выключена), то оставшаяся нода очень медленно начинает работать. Приложение порой по таймауту отпадывает. настолько медленно начинает работать.
Nick
Сарапулов
P и S одинаковы по конфигурации. Абритр естественно меньше. мониторинг сильно не помогает. Нагрузки нет. Оставшиеся ноды при каждом запросе стучатся к отключившемуся серверу
Nick
Nick
Сарапулов
600 секунд.
Nick
600 секунд.
а в обыное время сколько запрсоы длятся
Nick
600 секунд.
в общем случае сразу после переключения на секондари начинают прогреватсья кеши, начиная жрать диски как не в себя, и запросы замедляются,, но условоно через какоето время поведение нормализуется после прогрева. Но 10 минут это както многовато и мониторинг должен показыват ьлибо пробелмы в сети либо перегруз по дискам либо в логах ошибки
yopp
600 секунд.
Скорее всего это из-за read/write concern majority. Так как арбитр не хранит данные, то в кластере нет кворума по данным, только по голосованию.
Варианта два: или поменять дефолтные консерны на w:1 или перейти на PSS топологию
yopp
Второе предпочтительнее
Сарапулов
мы ставили w:0 чтобы меньше ждать.....
Сарапулов
👨💻
Привет. Подскажите, есть ли какие-то готовые инструменты, для того, чтобы нагрузочное тестирование на монго можно было провести, и проверить метрики потом ?
Нуриддин
Нуриддин
Настраивается в 2х файлах все на пайтоне, поэтому разобраться не сложно
Amine
Is it always free mongodb atlas
Amine
Can I use unlimited bandiwtich
Amine
So I can use 500mb storage and use api for all times
Amine
To read and write
One limit is storage 500mb only
Amine
Oh how much
Nick
Amine
I saw 10gb per week
Amine
Is that right ?
Nick
yeah
Amine
Cool
Amine
I just do small task scripts
Amine
I need to handle like 100k request per day