Абдурахмон
Кто-нибудь знает группу программирования на C++?
Ортонормированная
mongosh попробуй
sudo apt install mongodb-mongosh не помог этот пакет
Нуриддин
sudo find / -name mongo
Нуриддин
Как найдёшь добавь в path деректорию до шелла
Nick
sudo apt install mongodb-mongosh не помог этот пакет
https://www.mongodb.com/docs/mongodb-shell/install/
Назар
Всем привет. Не могу найти точную информацию в интернете. Есть коллекция и в ней поля fielda, fieldb. Мне точно нужен по ним compound index. Также мне нужно искать только по полю fielda. Вопрос. Нужен ли мне еще отдельнй индекс по fielda? И если сделать просто 2 индекса по fielda и fieldb то что будет при поиске по обоим полям вместе?
Ортонормированная
Nick
я поставил
Тогда в чем проблема? mongosh и полетети
Ортонормированная
Тогда в чем проблема? mongosh и полетети
а подключаться через mongo просто никак?
Nick
а подключаться через mongo просто никак?
Это одно и тоже, просто переименованное
Ортонормированная
:C
Нуриддин
:C
Попробуй написать как ссылку к базе
Нуриддин
?
https://www.mongodb.com/basics/mongodb-connection-string#:~:text=The%20MongoDB%20connection%20string%20for,port%20number%20you%20are%20using.
Eugene1111
Привет, чето я не врубаюсь как добавить документ с 'под-докуметами', объект объектов и тп. Будто возможно только массив объектов добавить и всё... Через атлас по крайней мере у них на сайте. нужно чтобы было просто вайбер например а в нем уже отдельные категории-документы-объекты, но позволяет добавить только массив... ( первый скрин) Надеюсь понятно объяснил второй скрин пример объекта
Eugene1111
Eugene1111
вот у меня есть такой объект я хочу вот так его вставить в бд но их интерфейс говорит нельзя так делать, ну естественно в json формате, но все равно он принимает только массив и все, и я не врубаюсь как сделать эти все подкатегории в одной бд приходится типа деплоить еще 1 серверлесс... сервер-бд для того чтобы хотя бы на 1 уровень как-бы закатегорить бд
Eugene1111
Eugene1111
или мне в нем нужно как в конструкторе сгенерить нужную структуру?.. вроде нет... или да?))
Нуриддин
Такой json должена съесть монга
Eugene1111
тю... уже можно ахахах тогда еще 1 вопрос если можно аа потом читать его придется весь? или можно по каким-то ключам запрашивать только нужные поля?
Eugene1111
дб(имя).коллекш(имя) и всё? фильтр? ладно хорошо, я пока сам, спасибо)
Nick
тю... уже можно ахахах тогда еще 1 вопрос если можно аа потом читать его придется весь? или можно по каким-то ключам запрашивать только нужные поля?
два ваиранта 1 - использовать фильтрацию через проекцию https://www.mongodb.com/docs/manual/tutorial/project-fields-from-query-results/ 2 - через агргеацию, там через стейдж $project
Eva🇺🇦
Привет Для чего используется cluster_id? Идентификатор для определения енвайромента? Что если ответ не имеет поля cluster_id? Все ответы на запрос должны иметь этот айди? Задаю эти вопросы, так как вообще впервые узнал о его существовании (ранее работал только через ODM)
Eva🇺🇦
где вы его увидели?
Есть некий пайтон скрипт, который напрямую работает с БД Но я этот скрипт не видел. Просто знаю, что в респонсах есть инфо о кластере, но иногда и нет
Илья
день добрый, использую $addFields вопрос - можно ли добавить новое поле с обработаным з-нием $addFields: { cleanDesc: { $toString: "$name" }, }, допустим использовать replace?
Илья
а что помешает?
спасибо, уже нашел $function: {}
Eugene1111
чет не получается.... подскажите плиз что не так const db = mongoClient.db('data'); console.log(await db.collection('images').find({ categories: 'viber' }).toArray()); возвращается пустой массив..
Eugene1111
а вы хотите содержимое чего именно получить?
всего что внутри viber ключа массив icons
Tetra
всего что внутри viber ключа массив icons
тогда find( {_id: OBejctId(".....")}, {categories.viber: 1} ) в начале фильтр для поиска, в нем для примера привел как указать выборку по _id во втором параметре pojection через нотацию с точкой указывается путь, единица говрит что это поле надо вернуть
Eugene1111
а если вообще ключ categories убрать.. я думал оон хочет чтобы был какой-то ключ типа и значение поэтому и добавил categories, но чето оно вообще никак не хочет..
Tetra
вставьте тот что у вас в документе
Eugene1111
не работает оно хоть что куда вставлять я вот просто в атласе пытаюсь хоть что-то отфильтровать, возвращется 0 и всё
Eugene1111
Tetra
покажите как фильтр пишете
Eugene1111
ок, ну если _id: 1 написать то возвращается... но чето в node.js _id не прокатывает
Eugene1111
Eugene1111
если на строку изменить
Eugene1111
а просто id норм)
Eugene1111
ладно вот у меня вот такой док как мне вайбер то вернуть
Eugene1111
что написать надо в фильтре
Tetra
что написать надо в фильтре
фильтр для поиска документа, чтобы вернуть нужные поля нужно добавить проейкцию выше же скинули https://www.mongodb.com/docs/manual/tutorial/project-fields-from-query-results/
Tetra
разберитесь с примерами там
Eugene1111
нет там ответа
Eugene1111
вот так вроде работает........ await db.collection('images').find({}, { projection: { viber: 1 } }).toArray()
Eugene1111
что это мне дало только непонятно, все равно возвращается массив с кучей хлама а не чисто контент внутри вайбер...\
Tetra
что это мне дало только непонятно, все равно возвращается массив с кучей хлама а не чисто контент внутри вайбер...\
вам надо научиться писать фильтры, т.к. {} это пустой фильтр чтобы вернуть все документы что есть в коллекции ну а про вернувшийся хлам - как записали так и вернуло)
Eugene1111
а можно ли внутри массива update данные? или только новым массивом... ну должно же быть можно вот подскажите плиз крайний раз как мне вот отсюда вернуть нужный объект у которого ссылка совпадает и обновить его values... я поражен вообще мягко говоря нет слов
Tony
Если я правильно понял что ты хочешь
Eugene1111
через квери как-бы а не позже
Tony
Ну и наверное $unwind ещё потребуется
Eugene1111
Ну и наверное $unwind ещё потребуется
спасибо, наконец-то я добрался до этого гребаного объекта ахаха, зачем вообще так было делать.... ну понятно, я просто не понимаю да ахаха
Nick
спасибо, наконец-то я добрался до этого гребаного объекта ахаха, зачем вообще так было делать.... ну понятно, я просто не понимаю да ахаха
а как бы вы реализовали универсальную языковую конструкцию для подобных запросов?) Если это слишком сложно, то всегда можно пойти по пути плоских данных и не извращаться с вложенностью, если это кажется неудобным
Eugene1111
а как бы вы реализовали универсальную языковую конструкцию для подобных запросов?) Если это слишком сложно, то всегда можно пойти по пути плоских данных и не извращаться с вложенностью, если это кажется неудобным
Да ну блин, тут вложенности пару уровней всего, и это настолько заморочено... Ну было по крайней мере, пока 1 раз не сделать... Но все равно блин, почему не сделать обычные методы объектов и массивов, или что-то по-человеческее хотя бы какие нафиг анвинды и тд, ну ладно
Nick
Да ну блин, тут вложенности пару уровней всего, и это настолько заморочено... Ну было по крайней мере, пока 1 раз не сделать... Но все равно блин, почему не сделать обычные методы объектов и массивов, или что-то по-человеческее хотя бы какие нафиг анвинды и тд, ну ладно
вот такой вот язык запросов, в целом если не заниматься непотребствами к которым монга плохо относится, то и хорошо и удобно работается. А вот когда хочется почемуто менять содержимое массивов на втором уровне вложенности, тут уж надо понимать что в таком случае либо придется разбираться как именно работает язык запросов, либо выносить все в код. И ту же фильтрацию тоже
Ортонормированная
Подскажите если я хочу условную монгу запихнуть в докер с volume, но при этом типо если volume не был создан, то он создается и некая база данных создается с коллекциями Как это грамотно сделать? version: "3" services: mongo: image: mongo:latest restart: always ports: - "27017:27017" environment: MONGO_INITDB_DATABASE: pastime MONGO_INITDB_ROOT_USERNAME: root MONGO_INITDB_ROOT_PASSWORD: root_password volumes: - ./init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro db.createUser({ user: 'yourusername', pwd: 'yourpassword', roles: [{ role: 'readWrite', db: 'yourdatabase' }] });
Ортонормированная
Вам что надо по сути?
хочу поднять докер контейнер чтобы типо если volume не был создан, то он поднял его и создал некую структуру коллекций с пользователем
Ортонормированная
Ортонормированная
@yatoba :C
Нуриддин
В этом имаже нужно самостоятельно прописать команду mongod как если бы вы поднимали на сервере или виртуалке
Нуриддин
Это и будет инициализацией
Нуриддин
mongosh вы хотели сказать?
Нет именно монгод
Kvhqm
Подскажите плз, как обновлять вложенные массивы? Т.е. у меня есть "такая" схема данных: { _id: Object.Id obj: [{ _id: Object.Id field1: "bla-bla", field2: [{ _id: Object.Id nestedField: "blabla-bla }] }] И мне нужно обновить nestedField