@MongoDBRussian

Страница 67 из 342
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
вот так вот получилось и не работает
после первый else нужно $cond и внутри if

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
Спасибо, вот то что и мне нужно было :)

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

внутри $push делать $group?

Michael
23.02.2017
07:33:15
https://gist.github.com/armicron/e9157236ee725ad0327b075ecbfd7149 Как такое можно сделать?
Зто зависить от версии. какая версия mongod?

внутри $push делать $group?
Конечно невозможно делать $group внутри $push :)

Google
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
systemctl restart mongodb не воскрешает
status и посмотреть логи

Sergey
23.02.2017
12:24:20
https://gist.github.com/armicron/65b10cbfda4e0605e531ad72b7a5cb08 как-то так

это вообще можно сделать?

Michael
23.02.2017
15:03:35
это вообще можно сделать?
Лучше вариант изменить тип "priceWithoutCurrency"

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
только задача не в этом
Если type "priceWithoutCurrency" int то тогда можно использовать агрегация.

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 и перетащить туда все данные. Пишите, пожалуйста, в личку.

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
Вся суть.

Страница 67 из 342