CC-BY-SA-4.0/Docker-ce30.0
Полет нормальный.
CC-BY-SA-4.0/Docker-ce30.0
Начинали с кассандры но 8 лет назад она была говном.
️lefrotite
Здравствуйте. Кто-нибудь может мне помочь кое с чем?
В MongoDB существует вложенный список, то-есть:
{ id:32984
name: "Felix"
messages: array
['Hi', 'How are you', 'Let's meet']
}
messages - список.
Нужно вывести третий элемент из списка messages. Каким образом это можно сделать?
D
@XENONIUM Получить весь обьект и обратиться к messages[2]?
️lefrotite
️lefrotite
Если что, опрерируется питоном
CC-BY-SA-4.0/Docker-ce30.0
Так это и ответ же.
CC-BY-SA-4.0/Docker-ce30.0
doc = db.collection.find_one({'_id': id})
print doc['messages'][2]
Ruslan
;)
Sergey
Через projection же можно. Доставать весь документ обычно слишком дорого.
️lefrotite
yopp
yopp
Sergey
yopp
Ты про query projection или про aggregation projection?
Sergey
Первое
Ruslan
Sergey
Это как?
https://docs.mongodb.com/v3.4/reference/operator/projection/slice/
Sergey
db.collname.find({},{_id:1, some_array:{$slice: [1,1]}})
достатанет _id и второй элемент массива
Sergey
с диска всё равно докумсент целиком достанется скорее всего, но по сети менбше данных гонять придётся и сериализовать/десериализовать
Но завиист от размеров документа, конечно. Если там 2 кб, то может и нет смысла в таких оптимизициях.
Ruslan
Прикольно, спасибо.
Кирило
ребят, объясните плиз, как мне посмотреть что внутри бд на монго?)
Кирило
я раньше только ms access и sqlite пользовался
Кирило
или тыкните что быстро можно прочесть)
Sergey
https://docs.mongodb.com/manual/reference/mongo-shell/
Кирило
всё, понятно
Кирило
спасибо огромное, Сергей)
Aleksey
возьмите робомонгу для начала
Aleksey
будет привычный итерфейс окошек
Кирило
спасибо!
Arthur
Всем привет. Вопрос , как правильно запускать Монгодб на проде. Если используется две прод ноды для сервера nodejs. Которые переключается между собой, если одна вышла из строя
Stepan
Почитай про replica sets
Timur
Если не указывать в find явно сортировку, то сортировка происходит по полю _id?
yopp
yopp
https://docs.mongodb.com/manual/reference/method/cursor.sort/#return-natural-order
Timur
Спасибо. Получается, лучше всегда явно указывать сортировку. Сейчас на разных окружениях получил разный порядок и не мог понять, в чем дело .__.
yopp
Если она нужна, то конечно.
yopp
Но надо учитывать что без индекса сортировка может быть очень дорогим занятием.
yopp
Ну или сортировка при неверном направлении индекса.
yopp
В смысле не «может» а будет
Timur
Кстати, вопрос по поводу индексов. Есть какой-нибудь тул или подход для того, чтобы сохранять изменения индексов, и их можно было одной командой накатить на новое окружение?
yopp
В самой монге — нет. В ODM обычно встроено что-то для этого.
Ruslan
камрады, у меня монго крутится в докер контейнерах и надо иметь возможность кидать команды из консоли (удалять тестовые БД), можно ли монгошел поставить отдельно?
yopp
каешно
CC-BY-SA-4.0/Docker-ce30.0
а в чём проблема? Указать ему порт.
yopp
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/#packages
Ruslan
а на маке?
Ruslan
я тут подумал, туплю, в контейнере же консоль есть, можно просто дать конкретную команду на удаление БД
John
А в чем полблема сделать
docker exec -it container_name mongo
Ruslan
как ему сказать, чтобы удалить конкретную БД?
John
Не совсем понял
Ruslan
--eval ?
Ruslan
docker exec -it container_name mongo --eval "{use test_xxx; db.dropDatabase()}"
John
У тебя несколько контейнеров с разными монгами, и тебе надо почистить одну из них или как?
John
А
John
Да не
John
После команды откроется cli монги внутри контейнера
John
И там уже сделал use dbname
John
db.drop...
John
Сделай'
CC-BY-SA-4.0/Docker-ce30.0
поставить монгошелл на мак.
John
Можно по идее одной командой
CC-BY-SA-4.0/Docker-ce30.0
и указать ему порт.
John
Да зачем ставить, если он и так есть внутри контейнера
CC-BY-SA-4.0/Docker-ce30.0
нет бы в контейнер поэвалить.
yopp
зачем вы внутрь контейнера вообще лезете
John
А почему нет, если это тестовое окружение?
yopp
ох
Ruslan
тестю я, не создавать же его заново
Ruslan
запустил раз тестовый контейнер монги и херачу
Ruslan
хотя да, что-то в этом есть, можно же перед тестом создавать свой контейнер, а потом гасить
tenni
есть же studio 3t на маке
Ruslan
там много чё есть, знать бы про это
tenni
новый монгошеф https://studio3t.com
John
Ruslan
у меня компас уже есть
yopp
в том что нафига вам тогда докер
Ruslan
ну прав, прав...
Ruslan
да