CC-BY-SA-4.0/Docker-ce30.0
На год
ghett
Это паас же.
я тупой же, ну
CC-BY-SA-4.0/Docker-ce30.0
Зарегайся в aws
CC-BY-SA-4.0/Docker-ce30.0
Можно будет хилую виртуалку год гонять.
ghett
оке, спс
CC-BY-SA-4.0/Docker-ce30.0
Еще в мирантисе такое было
Anonymous
mongo учу только. вопрос по mongoose. при создании схемы можно указать unique: true - чтобы поле (допустим. name), в котором указан этот ключ, было уникальным (не повторяющимся) у каждого экземпляра модели, созданной при помощи такой схемы. верно я думаю? а что будет, если я вдруг в процессе создания экземпляров модели случайно задам для объекта А и для объекта Б поля name с одинаковым значением? таким образом - объект А и объект Б будут иметь не уникальные поля name. Что тогда?
CC-BY-SA-4.0/Docker-ce30.0
Я так понимаю по этому полю создастся индекс
CC-BY-SA-4.0/Docker-ce30.0
И при вставке будет ошибка.
Anonymous
И при вставке будет ошибка.
надо попробовать на примере
CC-BY-SA-4.0/Docker-ce30.0
Это вообще первое что надо делать.
Anonymous
Это вообще первое что надо делать.
да, конечно. но уже час ночи завтра ) надеялся, что есть готовый ответ )
CC-BY-SA-4.0/Docker-ce30.0
Лишь бы код не писать)
Anonymous
rs.status() что говорит?
Говорит, что конфиг невалидный. По логам вижу, что демон сам при запуске проводит инициализацию. Запускаю монгу в докере. С флагом --replSet конфиг инициализируется автоматом и нода в нём выглядит вот так: { _id: 0, host: "a06ac5ce2360:27017", ... Откуда он взял a06ac5ce2360, не понятно. Я пофиксил это костылём, который при создании контейнера вешает хост a06ac5ce2360 на 127.0.0.1, но это ненадёжно, т.к., похоже, что это какой-то хэш, который однажды изменится.
Anonymous
А так всё работает. Если демон находит этот хост, то автоматически делает его мастером.
Anonymous
Но WTF?
Анатолий
Возможно это имя компа (контейнера дркер)
Anonymous
Лишь бы код не писать)
попрошу воздержаться от инсинуаций ))
Ilyas
Привет парни. У меня возник вопрос, так как я не силен в backend разработке. Например у меня есть несколько запросов: 1) this.collection("users").findOne({username}) 2) this.collection("users").updateOne({email}) 3) this.collection("users").findOne({username, email}) 4) this.collection("users").findOne({sid, auth}) Мне нужно сделать индексацию. Насколько я понял под каждый запрос нужно делать индексы?
Ilyas
А не под каждое поле. И ещё допустим есть составной индекс из Id, username, auth. Если в запросе меньше полей то этот индекс будет бесполезным ? Поэтому нужно создавать под каждый запрос отдельный индекс?
yopp
Третий запрос будет использовать пересечение индексов
yopp
Индекс с sid и auth не нужен, если sid уникален. Но вообще в этом случае лучше в отдельной коллекции и sid в _id
Anonymous
Возможно это имя компа (контейнера дркер)
Неа. До сих пор не понятно, что за хэш.
Анатолий
Неа. До сих пор не понятно, что за хэш.
У меня, к примеру, при пустоц инициализации репликации монга добавлялась как "mongo1:1700"
Ilyas
Индекс с sid и auth не нужен, если sid уникален. Но вообще в этом случае лучше в отдельной коллекции и sid в _id
Т.е когда какое-то поле уникальное, мне не нужно вешать на него индекс?
Ilyas
Индекс с sid и auth не нужен, если sid уникален. Но вообще в этом случае лучше в отдельной коллекции и sid в _id
Извиняюсь если что то тупое сказал, но только так получается учиться))
yopp
Я такого не говорил. Я говорил что если sid уникален есть смысл вынести эти данные в отдельную коллекцию и засунуть sid в id (если он меньше 1024 байт)
Anonymous
У меня, к примеру, при пустоц инициализации репликации монга добавлялась как "mongo1:1700"
mongo-dev: image: mongo:3.6.1-jessie container_name: mongo-dev hostname: localhost ports: - '27017:27017' command: mongod --replSet "rs0" mongo-rs-dev: image: mongo:3.6.0-jessie container_name: mongo-rs-dev depends_on: - mongo-dev links: - mongo-dev:mongo volumes: - ./src/back/mongoInit.js:/mongoInit.js:ro command: mongo "mongo:27017" "/mongoInit.js"
yopp
А в случае с compound индексом, нет смысла делать постфикс, если префикс уникальный
Anonymous
mongoInit.js: /* globals rs */ rs.initiate({ _id: 'rs0', members: [ { _id: 0, host: '127.0.0.1:27017' }, ], })
Anonymous
rs.initiate() просто так не работает.
yopp
rs.initiate() просто так не работает.
Туда надо передать пустой документ: {}
yopp
Окей, спасибо
Если у пользователей больше одного sid то можно и в поддокументе оставить
Anonymous
Туда надо передать пустой документ: {}
А известно, по каким соображениям опция автонастройки не предусмотрена?
Anonymous
Или, хотя бы, настройки снаружи.
yopp
Не хочу быть занудой, но я уже давал ссылку на документацию. Там понятным языком со ссылками всё описано.
yopp
Optional. A document that specifies configuration for the new replica set. If a configuration is not specified, MongoDB uses a default replica set configuration.
Anonymous
Прошу прощения. =)
yopp
И автонастройки в каком виде?
Anonymous
Настройки чего?
Чтобы не пришлось отдельно подключасться и дёргать rs.initiate(), а, скажем, передавать соответствующий аргумент при запуске. Это может быть полезно при контейнеризации. Например, сейчас мне приходится ради 1 команды поднимать отдельный контейнер рядом.
yopp
Это убер хреновая идея
Anonymous
Как бы, несложно и не накладно, т.к. он сразу умирает, но костыль.
yopp
В моем опыте, все попытки автоматом разворачивать кластер заканчивались тем, что в один прекрасный день кластер по новой всесело разворачивался поверх данных.
yopp
Хочешь играть в русскую рулетку, пиши свои entrypoint скрипты
Anonymous
Ну, в данном случае, я дклаю это всё только ради возможности подписаться на изменения в коллекциях.
yopp
Задача надежно инициализировать кластер в общем виде не решается. Нужны внешние протоколы консенсуса, да и с ними тоже возможно наколоться.
Anonymous
О кластере пока речь даже не идёт. На данном этапе не нужно.
yopp
Реплика — кластер.
yopp
Я понимаю твою боль, но она оправдана.
Anonymous
Да, но суть в том, что это кластер из одного инстанса.
yopp
Напиши свой entrypoint
Anonymous
Напиши свой entrypoint
Т.е. сейчас я всё делаю правильно?
yopp
Не знаю. По вопросам как жить с докером лучше идти на девопс канал
Anonymous
А могу ли я переопределить дефолтный Replica Set конфиг? Где он лежит? Честно, уже искал. =)
yopp
Не можешь
yopp
Реплика сеты автоматически не разворачиваются.
yopp
Это by design.
yopp
Хочешь разворачивать автоматом — в другой чат.
Anonymous
Не знаю. По вопросам как жить с докером лучше идти на девопс канал
Ну, суть не в докере, а в том, что при запуске инстанса с помощью моего скрипта через монго шелл автоматом инициализируются нужные настройки кластера.
Anonymous
Ок.
Anonymous
Ну и это пока дев инстанс.
yopp
В самой монге по ряду обоснованных причин для этого нет инструментов.
yopp
Есть ops manager
Anonymous
Хорошо. Спасибо. =) Прояснилось.
yopp
Но я не уверен что он скриптуется
Ilyas
Но я не уверен что он скриптуется
Еще раз привет. Я плохо знаю английский, но вроде в документации написано что можно создавать составные индексы, а запросы не обязательно должны включать все поля. Для _id у меня по умолчанию создается индекс. А на счет сортировки - только по _id и нигде больше. Могу ли например теоретически создать такой составной индекс: { sid: 1, auth: 1, id: 1, email: 1, code: -1, username: -1, } А когда делаю запросы на выборку то, иногда включаю 3 поля, иногда 2, а иногда только одно?
Elena
Ребят, есть возможность нормально установить монго на 7 винду?
Ilyas
а все понял
yopp
Еще раз привет. Я плохо знаю английский, но вроде в документации написано что можно создавать составные индексы, а запросы не обязательно должны включать все поля. Для _id у меня по умолчанию создается индекс. А на счет сортировки - только по _id и нигде больше. Могу ли например теоретически создать такой составной индекс: { sid: 1, auth: 1, id: 1, email: 1, code: -1, username: -1, } А когда делаю запросы на выборку то, иногда включаю 3 поля, иногда 2, а иногда только одно?
Составные индексы работают слева на право. Это значит что тебе для использования индекса нужно в запросе использовать поля в «порядке» в котором они указаны в индексе. Грубо говоря составной индекс — матрешка. Верхняя матрешка самое левое значение. Это значит что в твоём примере без указания условия с полем sid индекс использоваться не будет.
yopp
На практике нужно считать compound индекс — уточняющим индексом. Как в почтовом адресе.
Ilyas
👍
Mykola
Если я Model.find({}) мангус возвращает же query не курсор ?. И зате я могу .then и уже использовать данные
Yura
Добрый день, уважаемые монговоды :-)
Yura
Кто интимно знаком со внутренним устройством, можете подсказать? Есть желание сделать драйвер, посылающий запросы в одно соединение асинхронно пайплайном. Протокол вроде на это расчитан (есть поле requestid и response_for). Но меня пугают, что запросы из одного коннекта будут обрабатываться строго по очереди (что, естественно, не айс). Так ли это? Или меня зря пугают?