yopp
а, ну тогда покатит
Sergei
некрасиво конечно, лучше бы switch использовать
Anonymous
вот так вот получилось и не работает
после первый else нужно $cond и внутри if
Anonymous
спасибо
You are welcome. Я бы советовал не использовать if else. просто { $cond: [ <boolean-expression>, <true-case>, <false-case> ] }
Pavel
как создать(обновить) в документах новое поле со значением, взятым из существующего поля?
Sergei
$project делать наверное
Pavel
а без aggregate есть способы?
Roman
я тут недавно бился с округлением поля :)
Roman
остановился на таком варианте
Roman
модет подойдет
Roman
db.getCollection('test').find( //find criteria ).forEach(function(item){ db.getCollection('test').update( { _id: item["_id"] }, { $set: { "filed1": item["field2"]) } } ) });
Roman
а вот с aggregate я даже и не могу придумать как, все равно апдейт нужно дергать
Pavel
вот нужно как-то в запросе это все сделать
Roman
ну вот я выше скинул вариант
Pavel
да, отработало, спасибо. Но чутье подсказывает, что есть более изящные варианты )
Sergei
а старое поле надо сохранить?
Sergei
если не надо, то $rename есть
Pavel
Надо сохранить
Anonymous
http://stackoverflow.com/questions/3974985/update-mongodb-field-using-value-of-another-field/37280419#37280419
Roman
Спасибо, вот то что и мне нужно было :)
Sergei
https://gist.github.com/armicron/e9157236ee725ad0327b075ecbfd7149 Как такое можно сделать?
Sergei
внутри $push делать $group?
Anonymous
https://gist.github.com/armicron/e9157236ee725ad0327b075ecbfd7149 Как такое можно сделать?
Зто зависить от версии. какая версия mongod?
Anonymous
внутри $push делать $group?
Конечно невозможно делать $group внутри $push :)
Anonymous
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" } }}} ]
Sergei
сейчас попробуем
Anonymous
Sergei
положил mongodb с помощью mapReduce
Sergei
больше не запускается
yopp
что значит «больше не запускается?»
Sergei
systemctl restart mongodb не воскрешает
Sergei
сейчас залью на gist
yopp
systemctl restart mongodb не воскрешает
status и посмотреть логи
Sergei
https://gist.github.com/armicron/65b10cbfda4e0605e531ad72b7a5cb08 как-то так
Sergei
это вообще можно сделать?
Anonymous
это вообще можно сделать?
Лучше вариант изменить тип "priceWithoutCurrency"
Sergei
в каком смысле изменить?
Anonymous
string => int
Anonymous
в каком смысле изменить?
или я что то пропустил?
Sergei
сейчас я проверю какой там тип, я по памяти написал
Sergei
ну да, в кавычках
Sergei
только задача не в этом
Sergei
а если я сделаю $unwind и codes станет просто строкой, можно как-то получить поле $articles.$codes?
Anonymous
только задача не в этом
Если type "priceWithoutCurrency" int то тогда можно использовать агрегация.
Sergei
а название поля через звёздочки обозначать?
Sergei
что-то я не представляю как делать аггрегацию
Anonymous
если название поля динамическое то у вас есть две проблемы. Динамическое название это "антипаттерн"
Sergei
вот, значит задача нерешаема без изменения структуры документа
Anonymous
можно через mapReduce как вы начинали. Но дело в том что он вызовет падение производительности
Sergei
от того что я написал mongo просто падает
Anonymous
Сколько док в коллекции? Но все равно mapReduce не хорошая идеа.
Anonymous
status и посмотреть логи
Sergei
док 38 тысяч сейчас, но весят 4Гб
Bruno
Anonymous
Товарищи, никто не хочет помочь нам развернуть кластер? Работа оплачивается, не бесплатно. Есть standalone instance, нужно развернуть кластер, помочь выбрать shard key и перетащить туда все данные. Пишите, пожалуйста, в личку.
Anonymous
Спасибо.
Anonymous
Вот теперь дело пойдёт в гору!
yopp
А сколько денег есть?
Sergei
https://asciinema.org/a/dblc0xyxrf2mfz1hogf347xlv printjson выдаёт свой код, по-моему так быть не должно
Sergei
надо было ещё вызывать метод next()
CC-BY-SA-4.0/Docker-ce30.0
там же pro.* школьники в основном
CC-BY-SA-4.0/Docker-ce30.0
какой-нибудь pro.rust
CC-BY-SA-4.0/Docker-ce30.0
где сидят 3-4 крутых перца и остальные школоло-страдальцы и мамкины хакиры с кали
Anonymous
Вся суть.
ghett
Ничоси! @litemn Ты чё фамилию мою неправильно пишешь, в гугле забанен?)
ghett
Так больше нравится)
мне вообще загран выдали на Ivanitskyi, жлобы
Aleksey
интересно
а ларчик просто открывался. не хватало индекса.
Aleksey
случайно
CC-BY-SA-4.0/Docker-ce30.0
Что
CC-BY-SA-4.0/Docker-ce30.0
@dd_bb приди порядок наведи)
A
Приветы
A
Есть вопрос)