Alexandrr
Типа ребятам удобнее делать запросы вида field:""
начальные данные какой вид имеют в поле? потому что "" - это строка, это уже "много данных", в сравнении с false & none
Alexandrr
Отсутствие.
что отсутствие? null?
Alexandrr
лучше использовать логический тип данных для идентификации параметров, если параметры предполагают односложные значения типа да/нет, так как он будет быстрее всего обрабатываться. boolean в go использует 8 бит
Alexandrr
вообще-то bool 1 байт)
ссылку на документацию можно?
Alexandrr
проверил напрямую
а при чём тут какой-то интерпретатор и офф. дока типов данных языка? хотя да, нашёл, получается ошибся, моя вина
Tony
а при чём тут какой-то интерпретатор и офф. дока типов данных языка? хотя да, нашёл, получается ошибся, моя вина
проблема в том что меньше 1 байта адресовать нельзя. Поэтому 1 байт минимум
success
Здравствуйте всем! Вопрос, как из этой коллекции, найти сам документ с определённым id, и потом же в этом документе найти из массива другой элемент с определённым id. Грубо говоря, вложенные find. Если можно, то просто пример не рабочий
Sardor
find({_id:x, "courses._id":y})
it will return document if id of document is x and one of id of courses is y
Maxmudjon
Здравствуйте всем! при агрегация group: { _id: { $month: “$created_at”, region: “$region” // не даёт группироват } } не удается группировать по месяцам и регионам (регион ObjectID)
success
find({_id:x, "courses._id":y})
Thanks! As i got it, it will execute in order? Firstly _id, secondly coursed._id? And if first is failed, i mean _id, then second, i mean courses._id will not execute?
Sardor
.find({condition1, condition2,condition3,...conditionX}) is like if(condition1 && condition2 && conditionX)
success
ASAP
Не резолвился промапленный список, он вообще без изменений остается почему-то, решил переписать на такой вариант, но тоже нет эффекта? Что я не так делаю?
ASAP
ASAP
Всем привет, подскажите пожалуйста, что в таком случае делать? пробовал lean() и toObject без exec(), результат тот же...
ASAP
Мб вам project использовать?
мне не нужно мутировать модель, просто отдать на клиент промапленный массив
Dmitry
И вообще от конструкции Promise можно отказаться
Ihor
Ребят, подскажите плс как организовать свертку следующей структуры: [[{"action_type": "offline_conversion.custom.1006568950316076", "value": "2"}, {"action_type": "offline_conversion.custom.3336172393264863", "value": "1"}], [{"action_type": "offline_conversion.custom.1006568950316076", "value": "2"}, {"action_type": "offline_conversion.custom.3336172393264863", "value": "1"}]] Что бы в результате получить такой объект: {"offline_conversion.custom.1006568950316076": 4, "offline_conversion.custom.3336172393264863": 2}
Ihor
$group и возможно перед этим $unwind
Дело в том что эти данные уже сгрупированы. Если повторить процедуру и сгрупировать по action_type - поломаюся результат. Можно ли reduce например применить?
ASAP
И вообще от конструкции Promise можно отказаться
спасибо, решил как вы и говорили на уровне бд: .select('-tgUserId -name -fileName -decrease -decreasePeriod -decreasePct').exec()...
Ihor
Так вы один фиг, хотите в конечном результате другой ответ
Верно, нужна сумма по values, но данные уже сгруппированы правильным образом.
Dmitry
Верно, нужна сумма по values, но данные уже сгруппированы правильным образом.
А почему когда вы группируете, сразу сумму тогда не посчитаете?
Dmitry
$sum можно использовать
Maxim
Коллеги, добрый день пишу аггрегационный пайп, использую язык Go, прошу вашей помощи задача - дан список "категорий", сгруппировать по полю "категория" и посчитать 1) все файлы и 2) файлы за промежуток времени Как сделано: 2 запроса: 1 - для периода времени) input: gte, lte $unionWith все нужные категории $match определяем критерий выборки $group по полям дата + категория (тут идет подсчет файлов) $project создаю проект 2 - для всех файлов посчитать сгруппировать по полю категория и посчитать $unionWith все нужные категории $group по полю категория (тут идет подсчет файлов) $project создаю проект что хотелось бы - как-то это всё сделать за один запрос подскажите плз, возможно ли это и в какую сторону копать? думал про группировку по полю категория, создать проект, потом сгруппировать по датам и создать еще один проект и заэмбеддить первый во второй, но сколько гуглил ничего не нашёл п.с. не ругайтесь плз, если где-то в терминах монго путаюсь, третий день всего лишь с ней знаком п.п.с если вдруг что-то невнятно объяснил, но при этом у вас есть желание мне помочь, готов ответить на любые вопросы
Ihor
Изначально данные лежат в таком виде. Каждая запись - 1 день. Нужно узнать, например сумму link_clicks для определенной campaignId за выбранный период.
Sergey
пацаны, слушайте, а как отшардировать назад?) может был у кого опыт?)
Ihor
Как при $replaceRoot отобразить остальные поля в документе? Я знаю что можно перечислить через $project, но у меня поля формата: "foo.bar.{что-то}" по-этому заранее не известно что писать в $project. $replaceRoot выглядит как решение, но нужны остальные поля.
Ihor
Понял, смержить нужные поля из основы во вложеный документ и тогда уже $replaceRoot 🤔
Maxim
Коллеги, добрый день пишу аггрегационный пайп, использую язык Go, прошу вашей помощи задача - дан список "категорий", сгруппировать по полю "категория" и посчитать 1) все файлы и 2) файлы за промежуток времени Как сделано: 2 запроса: 1 - для периода времени) input: gte, lte $unionWith все нужные категории $match определяем критерий выборки $group по полям дата + категория (тут идет подсчет файлов) $project создаю проект 2 - для всех файлов посчитать сгруппировать по полю категория и посчитать $unionWith все нужные категории $group по полю категория (тут идет подсчет файлов) $project создаю проект что хотелось бы - как-то это всё сделать за один запрос подскажите плз, возможно ли это и в какую сторону копать? думал про группировку по полю категория, создать проект, потом сгруппировать по датам и создать еще один проект и заэмбеддить первый во второй, но сколько гуглил ничего не нашёл п.с. не ругайтесь плз, если где-то в терминах монго путаюсь, третий день всего лишь с ней знаком п.п.с если вдруг что-то невнятно объяснил, но при этом у вас есть желание мне помочь, готов ответить на любые вопросы
попробую задать вопрос попроще подскажите, плз, я могу при агрегации сделать два проекта и заэмбеддить первый во второй? 🙂
Роман
я думал что уже достаточно знаю монго, но когда зашёл сюда, я перестал так думать
Alexandrr
я думал что уже достаточно знаю монго, но когда зашёл сюда, я перестал так думать
самое важное - спасибо админам и активным участникам, что поддерживают должный уровень профессионального общения, без оффтопа и флуда. сам открываю пропущенные сообщения и вчитываюсь внимательно, иногда действительно, попадаются интересные вопросы.
Aleksey
Всем большой привет!) Задеплоил монгу в кластер K8s, настроил фаерволы, так же манифестов открыл порт для внешних подключений apiVersion: v1 kind: Service metadata: name: mongo-service-replica-0 labels: name: mongo namespace: mongo spec: type: NodePort ports: - port: 27017 targetPort: 27017 nodePort: 31000 selector: statefulset.kubernetes.io/pod-name: mongo-0 Но при подключении через MongoDB Compass таймаутит подключение, вот логи с поды 2023-01-24T13:23:28.650+0000 I NETWORK [listener] connection accepted from 10.114.0.7:49924 #18 (1 connection now open) 2023-01-24T13:23:28.651+0000 I NETWORK [conn18] received client metadata from 10.114.0.7:49924 conn18: { driver: { name: "nodejs", version: "4.13.0" }, os: { type: "Darwin", name: "darwin", architecture: "x64", version: "21.6.0" }, platform: "Node.js v16.5.0, LE (unified)|Node.js v16.5.0, LE (unified)", application: { name: "MongoDB Compass" } } 2023-01-24T13:23:18.444+0000 I NETWORK [conn17] end connection 10.114.0.7:33395 (0 connections now open)
Aleksey
Притом, что на других серверах в таких же кластерах всё работает
Aleksey
Дали наводку что как-то можно коннектиться стендэлоун, а не к репликасету, но что-то не разобрался как это сделать
Aleksey
Может кто-то из вас решал такой кейс как настроить основной узел?
Aleksey
Обсудим, если с монгой поможешь
Aleksey
Aleksey
А кто с монгой работал и выбирал праймери поду? Я случайно сделал rs.initilize() без аргументов и сейчас пытаюсь добавить пути к другим подам, как это можно сделать?
Shell
Подскажите пожалуйста, что тут не так: Использую вот такой compose и подключаюсь uri: 'mongodb://admin:admin@localhost:27017', но мне шлет ошибку UserNotFound: Could not find user \"admin\" for db \"admin\"
Aleksey
Напиши в chatgpt
Aleksey
Он тебе расскажет как надо юзера создать
Aleksey
Я не токсик, он мне тоже говорил, я не запомнил прост)
Sergey
Подскажите пожалуйста, существует ли способ вернуть количество найденных документов? db.collection.find(query, projection, options) Находит документы, нужно знать количество..
Sergey
Count()
должно работать db.collection.count(db.collection.find(query, projection, options)) ?
𝔏𝔢𝔯𝔬𝔶
просто .count
Nick
в базе _id какой тип имеет?
Nick
тогда как вы собираетесь применить регулярку к числу? ее можно только к строкам
Nick
заводите рядом поле в строковом виде и ищите по нему, либо меняйте тип _id
Nick
а с чего вообще потребность искать наличие единицы в идентификаторе?
Nikita
с
C
Как можно реализовать запрос где у меня N-ключей, каждый из них массив и он может быть равен условному [0] или $in [2,3] к примеру? конструкцию типа key: {$or:[...]} монга не умеет
C
Потому, что $or: [{key: {$in: [...]}}, ...]
Я знаю почему, меня интересует как это сделать так, чтобы не писать 100 условий на 5 ключей поиска
Dmitry
Покажите примерную структуру данных и что на выходе хотите получить
C
Покажите примерную структуру данных и что на выходе хотите получить
{ a: [...], b: [...] .... } Юзер под каждое поле сетапит значение для поиска. Но фишка в том, что если он для поля укажет значение [1,2] я должен найтb не только документы где $all:[1,2] но также и все те, где массив пуст(к примеру)
C
Т.е. $or:[{a:{$all: [1,2]}}, {a: []}]
C
Но когда ключа два, то уже придется каждое старое условие модифицировать + добавлять новые. И если ключей для поиска 5, то этих условий внутри уже будет 20+ точно(придется же все возможные варианты явно происать и указать)
Dmitry
https://www.mongodb.com/docs/manual/reference/operator/query/where/
Там есть пример с JS function, которая прокидывается в качестве фильтра. Возможно, вам стоит написать function и прокинуть в сам запрос, который получить всё keys и переберет под ваши требования
Dmitry
Больше ничего на ум не приходит, чтобы перебрать всё поля, не задавая сразу в условии их