Гена
{
"$project" : {
"feald" : {
"$objectToArray" : "$feald"
}
Гена
вот кусок запроса
Nick
дальше добавить стейджы
$unwind
$match
Гена
а match будет field.k?
Anonymous
🤚 привет
Nick
Гена
да
что то пока не получается....ну ща попробую разобраться
спасибо
Гена
да
вот такой мутант получился
db.getCollection("coll").aggregate(
[
{
"$project" : {
"field" : {
"$objectToArray" : "$field"
}
}
},
{
"$unwind" : {
"path" : "$field.k"
}
},
{
"$match" : {
"field.k" : 1.0
}
},
{
"$limit" : 1.0
}
],
{
"allowDiskUse" : false
}
);
Nick
анвинд просто field
Гена
Гена
просто запрос супер долго бежит
Nick
а вы лимит в начало поставьте
Nick
чтобы проверить идею
Гена
ок
Гена
чет не хочет
Гена
[
{
"$project" : {
"field" : {
"$objectToArray" : "$field"
}
}
},
{
"$limit" : 1.0
},
{
"$unwind" : {
"path" : "$field"
}
},
{
"$match" : {
"field.k" : 1.0
}
}
],
{
"allowDiskUse" : false
}
);
Гена
{
"$match" : {
"field.k" : 1.0
}
неверный
Гена
@yatoba подскажи пожалуйста, можно ли в цикле в монге подставлять значения через курсор в путь ?
то есть field.переменная.value?
Гена
всё
Гена
разобрался
Гена
Спасибо большое)))
Гена
Подскажите пожалуйста, а как через group собрать всех по оперделённому значению ?
Гена
например по значению field.1=5
и вот все документы где это значение равно 5 захлопнуть в один
Roman
Можно выбрать все документы, где field.1=5, а потом делать group
Гена
Гена
можно как то сделать так чтоб он одинкаовые схлопывал?
Roman
Что значит "одинаковые схлопывал" ?
Гена
Что значит "одинаковые схлопывал" ?
если документы в них есть поле 1
в каждом документе это поле содержит еще поле 2 со значениями
от 1 до 999
надо со всех документов собрать одинаковые значение и собрать в один вывод
например
Документов с значением 88 в коллекции 150
Гена
структура такая
поле1.поле2.:значение
Гена
ну и в идеале показать сколько таких значений поймалось
Roman
Вы бы лучше где-нибудь написали пример, какие документы имеются, и какой результат ожидается. Непросто понять, какая у вас схема данных
Гена
это один документа
а таких много где есть и 88 и 110
Гена
надо чтоб они собирались вместе
Roman
Попробуйте
group {
_id:{
"$field.k"
}
}
Гена
спасибо, сейчас попробую
Гена
не, пишет ошибку(
Гена
он просит после "$field.k" двоеточие
Nick
уберите вокруг "$field.k" скобки
Гена
Гена
что то вышло
Гена
но пока не понял что
Гена
Nick
ваши значения и вышли
Гена
то есть 134 то значение
Nick
прочитайте весь раздел, много вопросов снимется
Гена
ок
спасибо)
Гена
у меня теперь вопрос, как посчитать все документы у которых одинаковый вывод.
то есть например все где есть 134
Roman
Первый пример же
https://docs.mongodb.com/manual/reference/operator/aggregation/group/#count-the-number-of-documents-in-a-collection
Гена
хммм
Гена
наверное я как то не так тестировал
Гена
спасибо
Roman
Только для _id задаете не null, а поле по которому группируете
Гена
а вместо каунт ?
Гена
простите что задалбливаю, я просто уже в отчаянии(
Roman
count - это просто имя поля, в котором будет результат, можете назвать как хотите
Гена
вроде готово) спасибо
Гена
Anonymous
Привет! подскажите, плиз, если я в компас монго подключаюсь без пароля, то почему pycharm запрашивает пароль? пробовал по всякому и никак не подключается. PS defaultauthdb и admin не прокатило.
Veaceslav
Всем привет, можно ли как-то в $arrayelemat если нету нужного field-а, отдавать дефолтное значение ?
Anonymous
добрый день, коллеги!
есть запрос, вида (в аггрегации):
$match: {
$or: [
{
userId: ObjectId('5cc25e9a63fb1ebc93b23575')
},
{
status: '1',
fieldUser: '5304'
}
],
status: {
$ne: '2'
}
}
Вопрос, какие индексы должны быть?
В коллекции 5 милллионов документов
Сейчас такие индексы:
index({ userId: 1 })
index({ status: 1, fieldUser: 1 })
index({ status: 1 })
выгрузка данных с профайлинга (system.profile) показывает высокие показатели (millis), самый высокий - 98000
Дока не очень помогает - https://docs.mongodb.com/manual/reference/operator/query/or/
Yaroslav
Посмотрите query plan, там будет расписано что с вашим запросом происходит, сможете разрбраться на какой стадии втыкает.
У вас три поля в запросе, чтобы монга при фильтрации не подтягивала документы с диска нужно как минимум, чтобы все эти поля были в индексе. Я бы разбил это на два запроса и сделал два двойных индеса (status, fieldUser), (status, userId). Но сначала лучше через query план понять что у вас за проблема)
Ivan
Ребят а кто-нибудь монгу к графане прикручивал?
Mher
Mher
Коллеги, всем привет!
Кто ни будь подскажет подсказать как сделать так чтобы по результату индекса все не доставалось из базы а что что то работает очень неоптимально:
Ivan
+
А через какой датасорс, если не секрет
Mher
Ivan
Пока на том же стенде где и монга
Mher
самый простой вариант это с прометием
Mher
у меня даже где то есть контейнер собранный
Mher
щас, если найду скину
Ivan
Да вряд ли в лабе позволят контейнер деплоить чей-нибудь
Ivan
Я про то что к своему удивлению нашел в графане кучу датасорсов, но монги как датасорс нету
Ivan
Нашел вот такой проект
https://github.com/JamesOsgood/mongodb-grafana
Но я хз как он будет по прозиводительности работать. У нас в эластик падает по 80гб счетчиков в день. Эластик вывозит, но у него нейтивный датасорс в графане. Сейчас решил попробовать монгу потестить и вот заткнулся
Mher
а тебе для мониторинга нужно или для запросов?
Ivan
Запросы с графаны в монгу делать
Mher
ну так бы и сказал... подключаешь плагин для графаны, и пользуешься, по сути все
Ivan
Да вот хотел спросить если кто-то уже ставил, какие фидбеки по производительности. Если никто не ставил, поставлю и отпишусь вывезло/невывезло :)