
Алексей
20.02.2017
17:06:29
да не я про конкретно эту штуку

yopp
20.02.2017
17:06:43
И я про неё. Самое ценное в этой штуке — я :)
Потому что я умею читать все эти графики
Т.е. не в графиках ценность, а в их анализе. Собрать графикорисовалку не такая и сложная задача на самом деле. Но я вижу что потом эксплуатантам очень сложно самостоятельно из этих графиков делать какие-то выводы, потому что надо очень глубоко понимать что там именно делает монга и почему именно сейчас этот всплеск на графике — плохо

Google

yopp
20.02.2017
17:10:01
Т.е. даже для тебя в этом будет ценность именно в контексте того, что я смогу тебя научить смотреть на эти графики.
Ну или ты потратишь какое-то время на то чтоб самостоятельно научиться эти графики читать

Алексей
20.02.2017
17:11:09
научится читать это графики совершенно отдельная задача да
но софт который собирает данные и человек который их может проанализировать это два разных человека
а то и три

yopp
20.02.2017
17:12:17
Ну вот я хочу сделать из этого робота

Алексей
20.02.2017
17:12:39
автоматический dba ?

yopp
20.02.2017
17:12:42
Да

Алексей
20.02.2017
17:12:54
не новая идея да...

yopp
20.02.2017
17:12:56
Причём я даже знаю как это сделать, но это время займёт

Алексей
20.02.2017
17:26:43
@dd_bb побанте vitaliy
это спамер

yopp
20.02.2017
18:46:22
А я его уже сразу

Google

Алексей
21.02.2017
19:49:14
@dd_bb забань Антон это бот

yopp
21.02.2017
20:05:43
Пусть напишет
Тогда забаню и зарепортю спам

Dmitry
21.02.2017
21:35:49
Ребята треба ваша помощь: есть продукт. Который еще в самом начале разработки. Есть БД, структура которой еще не постоянная. Приложение будет распространяться как npm пакет. Хочется продумать стратегию обновления структуры БД при обновлениях версии приложения. Чтобы скажем применялись апдейты от одного до другого, чтобы клиенты при обновлении, всегда имели все обновления структуры без разрушения того что у них уже есть. Кто нить делал такую задачку? Что можете посоветовать?
Я нашел npm пакет database-updates который вроде как должен реализовать такую задачу, но интересно послушать опыт от тех кто уже так делает

yopp
21.02.2017
21:56:01

Dmitry
21.02.2017
22:06:32
Такая задачка что при обновлении npm пакета, с версии 1.0.0 на 1.4.8 при запуске нужно обновить все коллекции последовательно накатывая изменения в структуре с версии 1.0.0 до 1.4.8

yopp
21.02.2017
22:24:59
Ну. Храните в одной коллекции номер текущей версии. И все миграции от первой до текущей версии таскаете с собой из версии в версию

Andrey
21.02.2017
22:37:14
ребята, подскажите пожалуйста что я делаю не так
почему у меня создается в бд petya, но не создается vasya? Я заметил что vasya.save не пашет - callback внутри petya.save выводит 'saved **', а callback внутри vasya.save не выводит ничего, я по фану делал там внутри throw new Error - тож не сработала. обьект vasya создается, а вот vasya.save не пашет((

Dmitry
21.02.2017
22:57:02
Убери дисконнект от базы
И проверь сработает ли

Andrey
21.02.2017
23:05:01
о! работает! мне там в одном чатике дали совет такой же. но возник вопрос - я делал все по туториалу
а там вот так

R
22.02.2017
10:42:37
всем привет
подскажите в моднге можно как-то апдейтом округлить значения?

yopp
22.02.2017
10:43:17
что значит округлить?

R
22.02.2017
10:43:33
например
есть поле data.metrics.x

Google

R
22.02.2017
10:43:43
оно float
а нужно округлить до ближайшего целого
db.getCollection('test').update(
{
"data.metrics.x": { $exists: true }
},
{
$set : {
"data.metrics.x": Math.round("data.metrics.x"),
}
},
{
"multi" : true,
"upsert" : false
}
);
так вот
не получается
только вникаю в монгу, пробовал в лоб по аналогии с мускулем
не проканало :)

yopp
22.02.2017
10:45:34
А кто тебе сказал что твой js должен в запросе канать?
https://docs.mongodb.com/manual/crud/

R
22.02.2017
10:46:00
да вот никто и не говорил

yopp
22.02.2017
10:46:23
Вот начни с изучения этого полезного раздела документации
а потом вот этого: https://docs.mongodb.com/manual/reference/operator/update-field/

R
22.02.2017
10:47:58
ага понял
спасибо
получается оклуглить можно вот так
db.getCollection('test').find(
{"data.metrics.x": { $exists: true }}
).forEach(function(item){
db.getCollection('test').update(
{ _id: item["_id"] },
{ $set: {
"data.metrics.x": Math.round(item["data"]["metrics"]["x"])
}
}
)
});
я в нужну сторону мыслю? :)

Michael
22.02.2017
11:45:43

R
22.02.2017
11:46:08
тогда как?
округлить значение

Google

Michael
22.02.2017
11:48:55
сначала какая версия mongod?

R
22.02.2017
11:49:04
3.2
3.2.7
полностью

Nick
22.02.2017
11:54:46
$ceil посмотри

R
22.02.2017
11:55:36
уже смотрел
только я не могу понять как мне его к моей задачи то притулить

Michael
22.02.2017
11:59:51
В MongoDB нет $round можно использовать Aggregation Framework чтобы это делать и обновить документов используя bulkwrite
http://www.kamsky.org/stupid-tricks-with-mongodb/rounding-numbers-in-aggregation-framework

R
22.02.2017
12:02:10
ага, спасибо за наводу :)

Michael
22.02.2017
12:02:12
но если тебе просто нужно убрать дробная часть тогда $trunc

R
22.02.2017
12:02:23
я понял, спасибо
пойду изучать мат. часть Aggregation Framework-а :)

Michael
22.02.2017
12:03:51
конечно можно тоже использовать mapReduce

R
22.02.2017
12:11:16
а вот возвращяясь к моему варианту
в чем там ошибка
вроде заботает
или идеологически не правильный подход?
вот в этом варианте
db.getCollection('test').find(
{"data.metrics.x": { $exists: true }}
).forEach(function(item){
db.getCollection('test').update(
{ _id: item["_id"] },
{ $set: {
"data.metrics.x": Math.round(item["data"]["metrics"]["x"])
}
}
)
});

Google

Sergey
22.02.2017
12:28:03
Есть несколько типов документов (5 видов). Для примера возьму 3 случая
{"price" : {"current": 51.99 }, "source": "a1" }
{"product" : {"price": 21.99 }, "source": "a2" }
{"ADP" : {"price": 133.99 }, "source": "a3" }
Мне нужно допустим получить среднюю цену для каждого source, для этого я хочу брать цену из одного поля. Как мне сделать $project полей "$price.current", "$product.price", "$ADP.price" в одно с названием "$price"?
Mogodb версии 3.0.14

yopp
22.02.2017
12:30:36

Sergey
22.02.2017
12:30:54
Запрос сейчас такой
db.products.aggregate([
{
"$match": {timestamp: {$ne:null}}
},
{
"$project": {
_id:0,
source: 1,
timestamp: 1,
"price": выбрать из ["$product.price", "$price.current"...,. ..]
}
},
{
"$group": {
"_id": {
"source": "$source",
"datetime": {"$dateToString": {
"format": "%Y-%m-%d",
"date": {
"$add": [
new Date(0),
{ "$multiply": [1000, "$timestamp"] }
]
}
}
}
},
"average price": {$avg: "$price"}
}
}
])

yopp
22.02.2017
12:31:56
День тыканья лицом в доку! https://docs.mongodb.com/manual/reference/operator/aggregation/cond/#exp._S_cond

R
22.02.2017
12:32:14

yopp
22.02.2017
12:32:38
Я не уверен что есть другие варианты на самом деле :)

Sergey
22.02.2017
12:32:56
вот так вот получилось и не работает

yopp
22.02.2017
12:33:45
nmae
тьфу
запрос невалидный

Sergey
22.02.2017
12:34:10
запрос валидный