
Bro
20.09.2018
10:21:49
процессинг элементов из коллекции. берется N документов, обрабатывается. Процесс стартует заново. Кол-во элементов в курсоре нужно для логов / чтобы не передавать лишнее (избыточное) значение между калбэками итд метод есть, почему бы не использовать.

Nick
20.09.2018
10:22:19
а что мешает просто сделать счетчик на стороне приложения?

Bro
20.09.2018
10:22:26
проблема была только в том после limit/skip нужно не забывать with_limit_and_skip ставить в .count()

Nick
20.09.2018
10:22:34
это целый минус один запрос в базу на каждый такой запрос

Google

Nick
20.09.2018
10:22:58
а каждый запрос в бд на порядки дороже счетчика

Bro
20.09.2018
10:27:37
уже сделал

M
20.09.2018
10:44:38
Ребят а есть ли какой то способ тестировать бекапы ?
вот скрипт сделал бекап и загружает его на удаленное хранилище , есть ли способ убедиться перед загрузкой на сервер что был сделал рабочий бекап

AstraSerg
20.09.2018
11:45:12

Dave
20.09.2018
11:57:37

M
20.09.2018
11:57:54

Dave
20.09.2018
11:58:26
Каждый раз скриптом разворачиваем на staging

yopp
20.09.2018
12:08:27

M
20.09.2018
12:08:53

yopp
20.09.2018
12:09:03
Это очень плохое определение
Нужны конкретные признаки «рабочести»
Измеримые

Google

M
20.09.2018
12:10:15
определяющая все эти понятия

Dave
20.09.2018
12:12:00
Ибо если будет битый->тесты завалятся

yopp
20.09.2018
12:13:00
Проверка целостности данных — адски сложная штука
Нужно найти какие-то признаки, которые можно сверять.количество документов например. Или если вы храните заказы, то ещё и сумму.

Oleg
20.09.2018
12:22:19
хотябы физический уровень. знать что при восстановлении бекапа база будет доступна, коллекции можно будет вылить

yopp
20.09.2018
12:40:28
А пустые бэкапы это очень частая проблема

Oleg
20.09.2018
12:41:04
можно проверять кодвозврата mongodump-а, размер бекапа
/bin/mongodump --username "$DUMPUSER" --password "$DUMPPASS" --authenticationDatabase admin --out ${CURBACKUPDIR} --gzip 2> dump.log
STATUS=$?
...
SIZE=$(du -sb ${CURBACKUPDIR} | awk '{print $1}')
zabbix_sender -c /etc/zabbix/zabbix_agentd.conf -z ${ZABBIX_HOST} -p 10051 -k mongo.backup.status -s "$HOSTNAME" -o "$STATUS"
zabbix_sender -c /etc/zabbix/zabbix_agentd.conf -z ${ZABBIX_HOST} -p 10051 -k mongo.backup.size -s "$HOSTNAME" -o "$SIZE"
zabbix_sender -c /etc/zabbix/zabbix_agentd.conf -z ${ZABBIX_HOST} -p 10051 -k mongo.backup.path -s "$HOSTNAME" -o "${CURBACKUPDIR}"
в мониторинге пиликать на нулевой статус, неприлично мелкий размер бекапа

Nick
20.09.2018
12:41:53
может тогда проще в момент бекапа сохранить текущий размер данных и после рестора его чекать

yopp
20.09.2018
12:42:10
Это косвенный показатель целостности
Бэкап может быть большим, но битым

Nick
20.09.2018
12:42:47
опять же как и говорит @dd_bb нужно для себя явно обозначить критерий "целостности" иначе любые действия будут бесполезны

yopp
20.09.2018
12:42:58
Тут вопрос, вы хотите бэкапы для галочки или для данных

AstraSerg
20.09.2018
12:43:16

Oleg
20.09.2018
12:44:52

yopp
20.09.2018
12:44:56
Размер это не проверка
Даже контрольная сумма не проверка

Google

yopp
20.09.2018
12:45:30
Потому что по миллиону причин пока у вас может быть битый файл
И процесс завершится успешно

M
20.09.2018
13:10:21
@yopp а можешь пример рассказать на какой то тестовой базе , так как пока что звучит сложно . не получается грамотно сказать что же является целым бекапом( для начала хочется чтобы он был не пустой хотябы)

Vova
20.09.2018
19:05:06
{
_id: "...",
Data: {
"key1": "value1",
"key2": "value2"
}
}
Нужно поменять значение value2 на value3
update({ "Data.key2": "value2" }, { $set: { "Data.key2": "value3" } })
Правильно?

Fozilbek
20.09.2018
19:07:37

Vova
20.09.2018
19:08:03

AstraSerg
20.09.2018
19:08:33

Vova
20.09.2018
19:08:41

Artem
20.09.2018
20:38:09
Как можно найти все документы, где status = "progress" или "finished"?
.findOne({
status: "progress"
})

Vova
20.09.2018
20:39:46
{status: { $in: ["progress", "finished"] }}

Artem
20.09.2018
20:41:46
Спасибо

Alex
22.09.2018
12:51:29
Приветы. А насколько плохая идея использовать aggregation framework для обычных регулярных запросов?
Понятно, что нереляционность, документо-ориентированность и вот это всё. Но тем не менее случилось страшное - надо джойнить данные две колекции и фильтровать одну на основе полей других.
Фактически есть еще путь с хранением избыточных данных. Но интересно попробовать aggregation.

XENONIUM
22.09.2018
12:56:26
{boys:{
Max:{...}, John:{...}}
Как найти документы, у которых в объекте boys есть объект Max? через $in?

Nick
22.09.2018
12:57:18
$exists

XENONIUM
22.09.2018
12:59:10
Благодарю

yopp
22.09.2018
13:10:03

Alex
22.09.2018
13:23:58

yopp
22.09.2018
13:24:37
Я же вам говорю: лучший способ получить ответы на все ваши вопросы — моделирование на реальных данных
AF во многих моментах сильно лучше чем M/R. Но это тоже не серебрянная пуля. Если вы решите в шарде отсортировать 100Тб коллекцию по неиндексируемому полю, то это однинаково не будет работать как с find так и с AF

Alex
22.09.2018
13:31:46

Google

yopp
22.09.2018
13:34:47
Задавай вопросы, если что-то будет не так идти
Ну и да, по полям по которым делают lookup индексы нужны
Иначе будет медленно, сканами коллекции
Вам в группу по js. Маловероятно что тут кто-то поможет с драйверами или ODM