
Dmitriy
23.03.2018
08:51:49

Kirill
23.03.2018
09:15:51
Подскажите как удалить все данные из коллекции у которых в документе конкретное поле содержит тип данных - строку

yopp
23.03.2018
09:18:08
Вы делает отдельный индекс для $text и отдельный индекс по цене.

Google

yopp
23.03.2018
09:18:41
Давно бы уже проверили

Игорь
23.03.2018
09:19:50

Nick
23.03.2018
09:20:13

yopp
23.03.2018
09:21:18

Игорь
23.03.2018
09:21:30
ок
сейчас проверю

yopp
23.03.2018
09:21:50
Но в целом, монга умеет в пересечение индексов. Не обязательно делать compound
В некоторых случаях так вообще, лучше два индекса


Игорь
23.03.2018
09:26:26
"winningPlan" : {
"stage" : "FETCH",
"filter" : {
"$and" : [
{
"price" : {
"$lte" : 2000
}
},
{
"price" : {
"$gte" : 100
}
}
]
},
"inputStage" : {
"stage" : "TEXT",
"indexPrefix" : {
},
"indexName" : "typePrefix_text_vendor_text_model_text",
"parsedTextQuery" : {
"terms" : [ ],
"negatedTerms" : [ ],
"phrases" : [
""
],
"negatedPhrases" : [ ]
},
"textIndexVersion" : 3,
"inputStage" : {
"stage" : "TEXT_MATCH",
"inputStage" : {
"stage" : "FETCH",
"inputStage" : {
"stage" : "OR"
}
}
}
}
},
"rejectedPlans" : [ ]
},
"winningPlan" : {
"stage" : "FETCH",
"filter" : {
"$and" : [
{
"price" : {
"$lte" : 2000
}
},
{
"price" : {
"$gte" : 100
}
}
]
},
"inputStage" : {
"stage" : "TEXT",
"indexPrefix" : {
},
"indexName" : "typePrefix_text_vendor_text_model_text",
"parsedTextQuery" : {
"terms" : [ ],
"negatedTerms" : [ ],
"phrases" : [
""
],
"negatedPhrases" : [ ]
},
"textIndexVersion" : 3,
"inputStage" : {
"stage" : "TEXT_MATCH",
"inputStage" : {
"stage" : "FETCH",
"inputStage" : {
"stage" : "OR"
}
}
}
}
},
"rejectedPlans" : [ ]
},


yopp
23.03.2018
09:27:17
Выиграла дружба: сначала поиск по TEXT, а потом пересечение его результатов с price. Включите статистику исполнения (executionStats: 1). И пожалуйста, длинные портянки складываете на gist.github.com

Игорь
23.03.2018
09:30:59
ок

Google

the garblovian
23.03.2018
11:12:03
привет, люди! второй раз восстанавливаю из backup'а БД, после исчезновения всех таблиц. Как можно объяснить проблему?
снаружи доступ к mongo запрещен, пароль сложный(
как проще всего проанализировать ситуацию?

yopp
23.03.2018
11:15:57
Логи посмотреть

the garblovian
23.03.2018
11:17:56
drop?

yopp
23.03.2018
11:18:06
Да

the garblovian
23.03.2018
11:19:46
блин, есть дропы :( а как такое возможно?

yopp
23.03.2018
11:20:11
Смотрите по номеру сессии откуда логин
Возможно у вас какие-то проблемы с аутентификацией или с правами

the garblovian
23.03.2018
11:24:01
спасибо большое! буду harden'ить!

Dmitriy
23.03.2018
12:06:38
Планирую перейти с постгреса и джанговского идиотского ORM на монгу и mongoengine. Уверен что все будет отлично )

Yurii
23.03.2018
12:14:13

Dmitriy
23.03.2018
12:15:13
Спасибо

the garblovian
23.03.2018
12:16:46

Игорь
23.03.2018
12:54:58
а если индекс весит больше 32 мб, то без лимита не сделать сортировку?

Nick
23.03.2018
12:57:30

Игорь
23.03.2018
12:59:05
я делаю поиск по текстовому индексу и потом сотировку по $meta. индекс весит 42 мегабайта и он выдает ошибку:
Sort operation used more than the maximum 33554432 bytes of RAM

Dmitriy
23.03.2018
12:59:17

Google

Dmitriy
23.03.2018
13:00:06

Nick
23.03.2018
13:00:50
и ужее ее не может отсортировать

Игорь
23.03.2018
13:03:23
ну да, я в принципе это понял. только вопрос в том, в как понять какое количество результатов возвращать. В разных полях, разное количество текста у разных документов и объемы могут быть разные. буду думать)

Nick
23.03.2018
13:05:19
не уверен точно, н оскорее всего эта пробелма решитсья выборкой по индексам с такой же сортировкой как вам требуется

Игорь
23.03.2018
13:06:46
я думаю, что поиск по этому полю вообще исключу из индекса пока, там реально могут быть огромные объемы инфы, а искать по нему будут очень не часто. это так, попытка добавить избыточный функционал заранее

Nick
23.03.2018
13:10:17
вообще ваша проблема упирается в ограничение https://docs.mongodb.com/manual/reference/limits/#Sort-Operations поэтому советую дополнительно ознакомиться со всеми ограничения монги, чтобы было меньше вопросов

Dmitry
23.03.2018
14:27:01
зайцы, а есть приблуда как django-factoryboy, но не для орма (mongoengine), а для прям коллекций (schema validation + indexes) монги? Фабрики генерить для юнит-тестов

Dmitriy
23.03.2018
14:46:22

Dmitry
23.03.2018
14:58:13
mimesis сейчас посмотрел и вижу что это аналог faker

Dmitriy
23.03.2018
14:59:21

Dmitry
23.03.2018
15:00:10
так даже если я сгенерю словарик с помощью него, этот словарик не уложится в валидацию моих коллекций
потому что фейкер о ней ничего не знает (и не должен)
спасибо энивей, подумаю в эту сторону

Dmitriy
23.03.2018
15:01:41
я тебя понял
нужно подумать как параметризовать

Игорь
23.03.2018
15:44:39
кто подскажет, в чем дело, все загуглил, не могу найти инфы
{
"ok" : 0,
"errmsg" : "language override unsupported: rus",
"code" : 17262,
"codeName" : "Location17262"
}
при попытке создать индекс

Nick
23.03.2018
15:46:16

Google

Игорь
23.03.2018
15:47:32
но откуда он это вообще берет? запрос
db.collection.createIndex( {name: "text", typePrefix: "text", vendor: "text", model: "text" })

Nick
23.03.2018
15:49:47
дефолтный язык выставлен в rus
придется явно указывать при создании индекса походу язык
а ОС какая где запущено?

Игорь
23.03.2018
15:57:26
linux. пытаюсь createIndex( {name: "text", typePrefix: "text", vendor: "text", model: "text" }, {default_language: "russian"})
тоже самое
не создает

Старый
23.03.2018
16:37:54
.....

Игорь
23.03.2018
16:39:11
Mint и на второй машине redhut.
Мне кажется дело не в этом, на других коллекциях все работает
Попалась одна, когда собирал данные и вывалилась эта ошибка

Старый
23.03.2018
16:40:00
а локаль русская установлена там

Игорь
23.03.2018
16:40:06
Да
Русская и английская
А монго за локалью обращается к системе при создании индекса?
Мне кажется нашёл решение, завтра проверю. Где-то в каком-то документе наверное есть поле language: rus

Hadevs
24.03.2018
06:01:41
Всем привет, вчера ночью столкнулся с проблемой. Думаю у многих такое было)
Удалили data/db и запросили биткоины. Бекап спас, но как обезопасить себя в будущем?

Viktor
24.03.2018
06:03:59

Hadevs
24.03.2018
06:04:16
Можно подробнее?) Я сам не бекендщик

Viktor
24.03.2018
06:04:17
сделать виртуальную частную сеть между application сервером и бд

Google

Hadevs
24.03.2018
06:04:20
Линку какую-нибудь

Viktor
24.03.2018
06:04:59
https://docs.mongodb.com/manual/tutorial/enable-authentication/

Hadevs
24.03.2018
06:05:06
thank you

Viktor
24.03.2018
06:05:27
а по сетям это уже смотрите у своего облака как настраивается

Hadevs
24.03.2018
06:05:48
через iptables я прописал команды некоторые
То есть через mongodb Auth нет возможности удалить директорию data/db/?
если я его настрою
потому что по логам он тупо прописывает rm -r -f /data/db и рад

Viktor
24.03.2018
06:07:15
а, вот оно чо
ну так это не бд виновата, вам сервер ломанули
получили доступ по ssh

Hadevs
24.03.2018
06:07:48
Кайф, а где ты обычно хостишь?
https://dba.stackexchange.com/questions/160690/mongodb-ransom-attack-and-its-solution
такая проблема

Игорь
24.03.2018
12:34:59

Nick
24.03.2018
12:40:22
ну тут только один вариант, отправляться на их багтрекер и спрашивать там что делать

Игорь
24.03.2018
12:53:06
нашел решение! language_override работает. то есть нужно всегда выставлять, если есть вероятность, что в приходящих данных будет поле language. Оно задает поле поиска для задания языка в документе. В общем пишем туда невероятную белеберду, которая точно не буде в приходящих документах полем))