yopp
А на следующих выходных можно про шардинг
Dmitrii
а что по поводу онлайн?
madspectator
Подскажите, нужно ли мне включать discard mount опцию для ssd диска? Хочу там XFS файловую систему создать для монги.
Rustam
Да, онлайн тоже интересен.
Ruslan
Amir
а кто-то может помочь с go драйвером и запросом?
filter := mongo.Pipeline{
bson.D{
{"$match", bson.D{{"updateDescription.updatedFields.user.status", bson.D{{"$in", bson.A{"Online", "Offline"}}}}}},
},
}
p
Всем привет!
Как можно выполнить $group (aggregation) по одному полю (не ключевому) и сохранить все поля объектов не указывая их явно?
yopp
yopp
такое?
yopp
иначе никак, потому что вам необходимо для каждого поля явно задать правило аккумулирования результата внутри записи группы
yopp
Amir
немогу составить правильный запрос) полная дичь происходит
Amir
единственный рабочий вариант вышел такой:
f := mongo.Pipeline{
bson.D{
{"$match", bson.D{
{"operationType", "update"},
{"$or", bson.A{
bson.M{"updateDescription.updatedFields": bson.M{"field1.status": "Verified"}},
bson.M{"updateDescription.updatedFields": bson.M{"field1.status": "Error"}},
bson.M{"updateDescription.updatedFields": bson.M{"field1.status": "Unbinded"}},
}},
}},
},
}
p
yopp
yopp
массив можно развернуть с помощью $unwind
p
Есть массив документов. Часть из них дублируется кроме одно поля. Нужно оставить только уникальные документы, а дублирующиеся поля собрать в в новое поле-массив
yopp
в сниппете по ссылке так и получается
yopp
Павел 💻
Ребят, объесните подалуйста,зачем юзать монго,если на sql сногие вещи делаются на много проще...в чём преимущество монго?
Nick
Павел 💻
Nick
Проектируйте данные чтобы не нужны были джойны
Nick
Монга докуметная база и нужно это использовать
Nick
Если у вас плоские реляционные данные то само собрй на скуль будет лучше ложиться
Nick
Join
А в чем проблема использовать лукап?
Павел 💻
Nick
А что про луап скажете?
Павел 💻
до это на sql в основном работал
Nick
Тогда вам надо поиграться со вложенными документами
Amir
а такой запрос валидный?
db.users.watch(
[
{ $match : {"operationType" : "update", "updateDescription.updatedFields.account.status": { "$in": ["Error", "Verified", "Unbinded"]} } }
]
)
Amir
а еще вопрос
"user.status" : "Verified",
"user.updated_at" : ISODate("2019-05-17T18:55:56.931Z")
Amir
так бывает?
Amir
что бы документ так распарсился ^^
Amir
{
"_id" : {
"_data" : "825CDF03BC000000022B022C0100296E5A100470FC3DE6113F4E40A06D0050D8E9E5F346645F696400645C9A7C3B51578B00073E9E250004"
},
"operationType" : "update",
"clusterTime" : Timestamp(1558119356, 2),
"ns" : {
"db" : "test",
"coll" : "users"
},
"documentKey" : {
"_id" : ObjectId("5c9a7c3b51578b00073e9e25")
},
"updateDescription" : {
"updatedFields" : {
"last_inn" : "000000000000",
"user.payload" : {
"result" : "COMPLETED",
"processingTime" : "2019-05-17T18:55:47.801+0000",
"permissions" : [
"CANCEL_INCOME",
"INCOME_LIST",
"INCOME_REGISTRATION",
"INCOME_SUMMARY",
"PAYMENT_INFORMATION",
"TAXPAYER_UPDATE"
],
"inn" : "000000000000"
},
"user.status" : "Verified",
"user.updated_at" : ISODate("2019-05-17T18:55:56.931Z")
},
"removedFields" : [ ]
}
}
change stream вот такое вот возвращает
Amir
ктонить 😭 help
Amir
https://jira.mongodb.org/browse/SERVER-35279 =\
Amir
watchCursor = db.users.watch(
[
{ $match : {"updateDescription.updatedFields": {$elemMatch: {"user.status": "Verified"} } } }
]
)
??
Nick
Anonymous
rus
Посмотри secure лог на список коннектов в ssh
rus
Если не почистилм, конечно
p
Всем привет!
Можно как-то включать $match в aggregate по условию?
Те, если запрос пришел с параметром, то фильтровать по нему, если без параметра - то отдавать все документы
yopp
Скорее всего на хосте с многой есть что-то заражённое. Вордпресс, друпал или ещё что-то. Надёжнее пересобрать хост с ноля
В логах монги можно посмотреть с каких адресов устанавливались соединения чтоб убедиться что файрволл действительно работал.
Pafa
Можно сертификат сделать на ssh
yopp
да причём тут ssh
yopp
все эти псевдо-вымогатели, они дубовые: берут базу старых уязвимостей в популярных продуктах, типа друпала, вордпресса, всяких там панелей, через уязвимости кладут туда стартовый пейлоад, который либо уже сразу заряжен, либо который подключится к c&c и скачает модули для атак.
конкретно модули для монги они дубовейшие: тупо пытаются установить соединение на локальный порт и есть получилось, дропают базу и создают новую с документом «дай биткойн»
yopp
ssh в основном используется для дальнейшего проникновения внутри сети. и вот аутентификацию по сертификатам, особенно автоматически настроенную, такая малварь особенно любит
yopp
и не надо на нём писать
yopp
и не обязательно пых
yopp
если у монги не стоял пароль, у вас могли быть другие так-же небезопасно сконфиругированные сервисы. или какие-то пакеты с уязвимостями которые вы не обновили
если у вас был доступ по ssh без пароля, то вам соседний зараженый хост мог принести туда малварь
yopp
если не найти кто и откуда вам дропнул базу, то дискач может продолжаться вечно
yopp
Новая рубрика: События нашего чятика или «Йопп достаёт москвичей»
yopp
25 мая в Москве мастер-класс «Практическая схемотехника»
Поговорим о том, когда нужно и когда не нужно думать о схеме. Разберём основные паттерны проектирования документов: когда стоит, когда не стоит, какие сильные и слабые стороны. Обсудим что стоит делать и что стоит не делать когда нет схемы.
Стоимость участия: 6,900₽. Изучите программу и купите билеты на: https://db-ai.timepad.ru/event/980574/
yopp
6 июня в Москве стендап «От мегабайт до петабайт не расплескав смузи» на #9 митапе Scalability Camp
Разговор о том, что там у MongoDB внутри и как этим можно пользоваться чтоб надежно и без боли хранить данные. Почему репликация это не масштабирование? Как угадать шард ключ? И конечно: теряет ли монга данные?
Участие бесплатное. Записывайтесь тут: https://www.meetup.com/Scalability-Camp/events/261525352/
yopp
4.0.9 (Apr 16) ◦ 3.6.12 (Apr 8)
События:
• 06 июня, Мск, Доклад: От мегабайт до петабайт не расплескав смузи (Бесплатно)
• 17–19 июня, Нью-Йорк, Конференция: MongoDB World (900$)
• Плейграунд для запросов
• Документация
• Официальные курсы по MongoDB
Stable: 4.0.9 | Bugfix: 3.6.12 | Legacy: 3.4.20 | Dev: 4.1.11
End of life: 3.2.21 (Sep ’18), 3.0.15 (Feb ’18)
Костяныч
Костяныч
yopp
это если порты не прикрыты с инета. если с голой жопой выставить вебприложеньку то да
«прикрыты с инета» это ложное ощущение безопасности. в моей практике полно примеров когда внутренние сети массово компрометировались, именно потому, что кто-то решил что этого хватит. и какойнибудь забытый всеми вордпресс для лендинга, который с момента деплоя никогда не обновляли, но который торчал и во внутренню сеть и в интернеты, приводил к заражению всей внутренеей сети.
One
One
серверы в DMZ
One
принтеры в отдельной DMZ
One
тогда, если кто-то хапнул петю, то страдает только один комп
yopp
нет никакого смысла рассжудать об огранизации безопасности в вакууме
yopp
DMZ тоже не панацея. если у вас нет аутентификации внутри DMZ , хватит одного скопрометированный хоста внутри изолированной группы
Вячеслав
У монги прямо сейчас идет курс по безопасности, может кому будет интересно и полезно
Костяныч
Костяныч
и дома нужен файлволл и без рута работать
Alexander
При initial sync'е с синхронизацией файлов через rsync нужно ли копировать WiredTigerLAS.wt ?
Вроде как, это кеш
yopp
yopp
более того, вы не можете это сделать на работающей ноде
Alexander
Да это я знаю
yopp
вам нужно или её остановить, или сделать снепшот файловой системы как в случае с бекапом и потом уже из снепшота делать копию
yopp
вообще идея rsync не очень
Alexander
Сначала делаю rsync, потом повторяю.
Потом db.fsyncLock() и повторяю rsync
Потом останавливаю кластер и повторяю rsync.
Рассчитываю на снижение времени простоя
yopp
это неверно