Nick
это отличется от того что вы скинули выше
Nick
если бы вы делали обычный find то решением было elemMatch
Nick
вам нужно будет вытащит ьимена и проставить их в соотвевующие from и to?
Никита
получить name такой, что бы в той штуке language был равен language транзакции
👨🏼‍💻
откуда транзакции в монге?
Никита
откуда транзакции в монге?
это придуманное название сущности
👨🏼‍💻
из прошлого
ну то что они называют транакциями в версии 4+ имеет пока не много общего с настоящими транзакциями
👨🏼‍💻
«настоящми транзакциями»?
я про то, как они реализованы в реляционных базах
yopp
вот такая вот штука :(
вам скорее всего выгоднее не трансформировать эти данные в монге, если данных не очень много
👨🏼‍💻
yopp
в чём?
в своём представлении что такое вообще тразакционные гарантии и чем эти гарантии в монге отличаются от других бд
Никита
там не только со станциями играться надо)
yopp
готов обсудить. у вас есть аргументы?
начините со своих аргументов, это вы начали
👨🏼‍💻
начините со своих аргументов, это вы начали
на самом деле оппонент отвечает на тезу обычно, раз мы обсуждаем это в научном ключе
Nick
там не только со станциями играться надо)
а не про ще ли будет на стороне клиента уже выбрать нужное значение? потмоу что на монге это будет достаточно больно сделать
yopp
на самом деле оппонент отвечает на тезу обычно, раз мы обсуждаем это в научном ключе
вы высказали преположение что транзакционные гарантии в монге какие-то не такие, никак не аргументировав. к чему тут аппелировать?
Nick
@dd_bb в у тебя лукапы в плейграунде еще не появились?
Nick
Хорошо, спасибо
можете скинуть на пастебин исходнуй запись, пару записей из названий станций и что вы хотите поулчить в итоге?
yopp
@dd_bb в у тебя лукапы в плейграунде еще не появились?
нет, всё никак не дойдут руки сделать табы для редактора коллекций
👨🏼‍💻
вы высказали преположение что транзакционные гарантии в монге какие-то не такие, никак не аргументировав. к чему тут аппелировать?
ок, в транзакции курсор создаётся вне самой транзакции, так же операции дроп и индексирование/удаление индекса не доступны, многодокументная транзакция не может включать операцию вставки и ещё много всего, но самаяя главная проблема как транзакции "работают" с кластером.
Nick
https://pastebin.com/0RnF13ZQ
думаю реально
yopp
ок, в транзакции курсор создаётся вне самой транзакции, так же операции дроп и индексирование/удаление индекса не доступны, многодокументная транзакция не может включать операцию вставки и ещё много всего, но самаяя главная проблема как транзакции "работают" с кластером.
Про курсор я вас не понял, дайте ссылку. Метаданные менять внутри транзакции нельзя, это действительно так. Вставку можно делать, с чего вы взяли что нельзя. Про «работают» с кластером я вас тоже не понял. Если вы про шарды, тэто было известно с анонса, что до 4.2 они ограничены replica set. 4.2 будет осенью.
Nick
https://pastebin.com/0RnF13ZQ
версия монги?
Nick
забудьте
Nick
делайте в приложухе
Никита
Ок)
Nick
то что нужно чтобы нормально вытащить то что вам нужно нужен 3.6
Nick
а иначе эт извраты с lookup unwind filter group два раза первый для from второй для to
Никита
А group тут зачем?
Nick
чтобы исключить дублирвоания
yopp
3.2.20
планируйте обновление до 3.6 хотяб. 3.2 EOLd и больше не будет обновлятся
Никита
чтобы исключить дублирвоания
А, там дубликатов не будет
Nick
это вам так кажется)
Никита
yopp
4.0.9 (Apr 16) ◦ 3.6.12 (Apr 8) • Плейграунд для запросов: https://play.db-ai.co • Docs: https://docs.mongodb.com/manual/ • Learn MongoDB: https://university.mongodb.com Stable: 4.0.9 (https://docs.mongodb.com/manual/release-notes/4.0/#apr-16-2019) Bugfix: 3.6.12 (https://docs.mongodb.com/manual/release-notes/3.6/#april-8-2019) Legacy: 3.4.20 (https://docs.mongodb.com/manual/release-notes/3.4/#mar-13-2019, EOL June ’19) End of life: 3.2.21 (Sep ’18), 3.0.15 (Feb ’18)
Nick
по моему опыту они появляются в самый неподходящий момент
Nick
А чем нормально вытягивать начиная с 3.6?
https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/#join-conditions-and-uncorrelated-sub-queries
Nick
там можно выставить условие и вытащить сразу нужное вам значение
Nick
потом простой project чтобы развернут ьиз массива
yopp
4.0.9 (Apr 16) ◦ 3.6.12 (Apr 8) • Плейграунд для запросов: https://play.db-ai.co • Docs: https://docs.mongodb.com/manual/ • Learn MongoDB: https://university.mongodb.com Stable: 4.0.9 (https://docs.mongodb.com/manual/release-notes/4.0/#apr-16-2019) Bugfix: 3.6.12 (https://docs.mongodb.com/manual/release-notes/3.6/#april-8-2019) Legacy: 3.4.20 (https://docs.mongodb.com/manual/release-notes/3.4/#mar-13-2019, EOL June ’19) Dev: 4.1.10 (https://groups.google.com/forum/#!topic/mongodb-dev/imsSh4spXEY) End of life: 3.2.21 (Sep ’18), 3.0.15 (Feb ’18)
Никита
вопрос новый ко всем: как обновить монгу с 3.2 с минимальным временем даунтайма?
Никита
и до 3.6 или 4.0 обновляться?
yopp
и до 3.6 или 4.0 обновляться?
rolling upgrade с 3.2 до 3.4, потом с 3.4 до 3.6 и потом с 3.6 до 4.0 https://docs.mongodb.com/manual/release-notes/3.4/#upgrade-procedures https://docs.mongodb.com/manual/release-notes/3.6/#upgrade-procedures https://docs.mongodb.com/manual/release-notes/4.0/#upgrade-procedures
Alexander
Здравствуйте. Не могли бы объяснить о mongoose в NodeJS? async function f1() { let one = await ModelOne.findOne({_id: '5cc1c46ee55cfd28c4f336d9'}) console.log(one.name) // John await f2(one) console.log(one.name) // F2 } async function f2(one) { one.name = 'F2' await one.save() } Обратите мнимание на console.log. Как так выходит, что я передаю экземпляр документа во вторую функцию, меняю там его, сохраняю, ничего не возвращаю, но в первой функции у этого экземпляра уже измененное значение. Если я сделаю тоже самое с любой переменной - то уткнусь в область видимости и ничего подобного не выйдет. Скорее всего я чего-то не знаю о NodeJS или о работе Mongoose.
Nick
https://pastebin.com/0RnF13ZQ
https://pastebin.com/N729aEXW
Nick
без группировок, но и без проверок что был найдено совпадение языка
Никита
Пора говорить начальству, что пора менять версию базы)
yopp
там внизу есть табличка с поддерживаемыми версиями
yopp
поддрежка вашей версии ещё в сентябре 18 года превратилась в тывку
Artem
Не кто не подскажет что лутчше использовать в качестве ключа для шардирования?
Nick
а какие у вас есть варианты?
Artem
ObjectId
Artem
uuid
Nick
уникальность надо проверять по какимто критериям?
Artem
Шардирование желательно сделать по uid пользователей, а что в качестве uid использовать я не знаю. Желательно и амих пользователей шаридировать. Но в таком случае ObjectId на сколько я понимаю не желательно использовать а по uuid не раскинешь по диапазону, может конечно я в чемто ошибаюсь или не так понимаю
yopp
Не кто не подскажет что лутчше использовать в качестве ключа для шардирования?
такой набор полей, которы есть во всех запросах и который позволит однозначно указать шард
Artem
user_id
Nick
посмотрите на использование hash индексов для шардирования
Nick
и да вам тогда по юзер ид
Artem
а ессть какието hash индекса которые можно отсортировать в зависимости от даты добавления
Artem
Или таких нет
Artem
Тоесть hash индекс которы бы хранил дату
Artem
итп итд