
yopp
22.02.2017
12:34:27
точнее как, синтаксически — да. логически — нет

Sergey
22.02.2017
12:34:32
он переименовывает только одно поле $product.price в $price

yopp
22.02.2017
12:39:42
мне кажется посчитать сумму и количество вхождений по каждому из нужных полей и потом посчитать среднее будет проще и быстрее чем городить такой проджекшен
более того, я не уврен как себя будет вести монга без явного сравнения в условии

Google

yopp
22.02.2017
12:40:48
так что идея if: "$foo" мне не нравится совершенно
либо три проджекшена подряд сделать ¯\_(ツ)_/¯

Sergey
22.02.2017
12:46:09
"price": { $ifNull: ["$product.price", {$ifNull: ["$price.current", {$ifNull: ["$ADP.price", "$model.displayPrice.price.value"]}]}]}

yopp
22.02.2017
12:46:22
а в 3.0 ifnull есть?

Sergey
22.02.2017
12:46:29
есть

yopp
22.02.2017
12:46:41
а, ну тогда покатит

Sergey
22.02.2017
12:46:43
некрасиво конечно, лучше бы switch использовать

Michael
22.02.2017
12:52:01

Sergey
22.02.2017
12:52:36

Michael
22.02.2017
14:10:41
спасибо
You are welcome. Я бы советовал не использовать if else. просто
{ $cond: [ <boolean-expression>, <true-case>, <false-case> ] }

Pavel
22.02.2017
15:10:54
как создать(обновить) в документах новое поле со значением, взятым из существующего поля?

Sergey
22.02.2017
15:12:21
$project делать наверное

Pavel
22.02.2017
15:12:42
а без aggregate есть способы?

Google

R
22.02.2017
15:13:03
я тут недавно бился с округлением поля :)
остановился на таком варианте
модет подойдет
db.getCollection('test').find(
//find criteria
).forEach(function(item){
db.getCollection('test').update(
{ _id: item["_id"] },
{ $set: {
"filed1": item["field2"])
}
}
)
});
а вот с aggregate я даже и не могу придумать как, все равно апдейт нужно дергать

Pavel
22.02.2017
15:14:05
вот нужно как-то в запросе это все сделать

R
22.02.2017
15:14:25
ну вот я выше скинул вариант

Pavel
22.02.2017
15:16:57
да, отработало, спасибо. Но чутье подсказывает, что есть более изящные варианты )

Sergey
22.02.2017
15:17:43
а старое поле надо сохранить?
если не надо, то $rename есть

Pavel
22.02.2017
15:20:53
Надо сохранить

Michael
22.02.2017
15:30:55
http://stackoverflow.com/questions/3974985/update-mongodb-field-using-value-of-another-field/37280419#37280419

R
22.02.2017
15:35:37
Спасибо, вот то что и мне нужно было :)

Pavel
22.02.2017
15:38:10

Sergey
23.02.2017
07:13:26
https://gist.github.com/armicron/e9157236ee725ad0327b075ecbfd7149
Как такое можно сделать?
внутри $push делать $group?

Michael
23.02.2017
07:33:15

Google

Sergey
23.02.2017
07:44:34

Michael
23.02.2017
08:19:56
3.0.14
в 3.0 лущче вариант:
[ { "$group": { "_id": { "day": { $dayOfYear: "$date"}, "year": { $year: "$date" }, "item": "$item" }, "price": {"$sum": "$price" } } }, {"$group": {"_id": {"day": "$_id.day", "year": "$_id.year"}, "itemsSold": {"$push": {"item": "$_id.item", "price": "$price" } }}} ]

Sergey
23.02.2017
08:20:47
сейчас попробуем

Michael
23.02.2017
08:21:22

Sergey
23.02.2017
11:58:54
положил mongodb с помощью mapReduce
больше не запускается

yopp
23.02.2017
12:15:39
что значит «больше не запускается?»

Sergey
23.02.2017
12:16:33
systemctl restart mongodb не воскрешает

Michael
23.02.2017
12:16:48

Sergey
23.02.2017
12:17:00
сейчас залью на gist

yopp
23.02.2017
12:17:18

Sergey
23.02.2017
12:24:20
https://gist.github.com/armicron/65b10cbfda4e0605e531ad72b7a5cb08
как-то так
это вообще можно сделать?

Michael
23.02.2017
15:03:35

Sergey
23.02.2017
15:03:51
в каком смысле изменить?

Michael
23.02.2017
15:04:33
string => int

Sergey
23.02.2017
15:06:38
сейчас я проверю какой там тип, я по памяти написал
ну да, в кавычках
только задача не в этом

Google

Sergey
23.02.2017
15:08:56
а если я сделаю $unwind и codes станет просто строкой, можно как-то получить поле $articles.$codes?

Michael
23.02.2017
15:10:39

Sergey
23.02.2017
15:13:03
а название поля через звёздочки обозначать?
что-то я не представляю как делать аггрегацию

Michael
23.02.2017
15:16:46
если название поля динамическое то у вас есть две проблемы.
Динамическое название это "антипаттерн"

Sergey
23.02.2017
15:19:29
вот, значит задача нерешаема без изменения структуры документа

Michael
23.02.2017
15:25:33
можно через mapReduce как вы начинали. Но дело в том что он вызовет падение производительности

Sergey
23.02.2017
15:28:48
от того что я написал mongo просто падает

Michael
23.02.2017
15:33:17
Сколько док в коллекции?
Но все равно mapReduce не хорошая идеа.
status и посмотреть логи

Sergey
23.02.2017
15:34:36
док 38 тысяч сейчас, но весят 4Гб

Dmitry
25.02.2017
23:18:56

Stefan
26.02.2017
09:15:17
Товарищи, никто не хочет помочь нам развернуть кластер? Работа оплачивается, не бесплатно. Есть standalone instance, нужно развернуть кластер, помочь выбрать shard key и перетащить туда все данные. Пишите, пожалуйста, в личку.

Serge
26.02.2017
10:08:01

Stefan
26.02.2017
10:23:51
Спасибо.
Вот теперь дело пойдёт в гору!

yopp
26.02.2017
11:27:10
А сколько денег есть?

Sergey
27.02.2017
05:29:50
https://asciinema.org/a/dblc0xyxrf2mfz1hogf347xlv
printjson выдаёт свой код, по-моему так быть не должно
надо было ещё вызывать метод next()

GNU/Docker
27.02.2017
17:15:34
там же pro.* школьники в основном

Google

GNU/Docker
27.02.2017
17:15:45
какой-нибудь pro.rust
где сидят 3-4 крутых перца и остальные школоло-страдальцы и мамкины хакиры с кали

Stefan
27.02.2017
17:19:40
Вся суть.