@MongoDBRussian

Страница 259 из 342
Nick
13.06.2018
10:25:05
вроде работает, сделал юниксовый таймстепм, при отправки с сервера сортирую .sort()
только учтите что при использовании юникстайма, если два дока будут в пределах секунды, то очередность вывода будет зависеть от случая

Sunlive
13.06.2018
10:25:32
ну на это я могу пойти, шанс на такое в текущем проекте равен 0.001%

мб и не самый изящный способ, но главное тчо бы работало

Vasiliy
13.06.2018
13:29:37
Здаров всем! Кто знает как сменить порядок элементов в коллекции? Хочу внутри коллекции поменять два элементами местами друг с другом

Google
Artem
13.06.2018
13:58:50
простите, а зачем это надо? вы же можете сами определять выводимые запросом ключи документов и их порядок

Shade
13.06.2018
14:06:33
Всем привет, подскажите пожалуйста как организовать схему личных сообщений.

Sergey
13.06.2018
14:14:23
ну как и в других базах добавляем поле sort_id и сортируем по нему

Vasiliy
13.06.2018
14:41:33
Да, так и сделал с сортировкой в итоге

?
13.06.2018
19:28:07
Как установить mongodb на винду?

на офиц сайте способ есть ток что=то не работает

в инструкции надо припосать msiexec.exe /q /i mongodb-win32-x86_64-2008plus-ssl-3.6.5-signed.msi ^ INSTALLLOCATION="C:\Program Files\MongoDB\Server\3.6\" ^ ADDLOCAL="all"

в консоли

А перед этим скачать msi установщик,. Я его скачал, прописал из папки с мси файлом - nbibyf

тишина

Устанавливал вот по \этой схеме

https://docs.mongodb.com/v3.4/tutorial/install-mongodb-on-windows/

Oleg
13.06.2018
19:33:00
а кликнуть два раза

Google
Oleg
13.06.2018
19:33:05
по установщику?

нельзя?

Artem
13.06.2018
19:34:25
эм. а в чем вообще профит монги на винде?

Oleg
13.06.2018
19:35:56
если у тебя енвароймент на форточках

то почему нет

но имхо лучше докер

или накрайняк вм поднять

Artem
13.06.2018
19:37:29
я с докерами не игрался, всегда есть возможность развернуть пачку виртуалок. а в докере можно вынести датафайлы базы за пределы докера?

Oleg
13.06.2018
19:37:47
конечно через вольюмы

можно тупо директорию замаунтить

а можно постоянный вольюм сделать

и его переиспользовать, бекапить, и таскать с собой

он уже не привязан к ОС, это удобнее

Artem
13.06.2018
19:39:27
о как) надо будет попробовать. у меня просто доманшний десктоп обычно для тестирования используется, все равно работаю только на ноуте.

Oleg
13.06.2018
19:45:18
крайне рекомендую освоить. очень полезно не надо париться, чтоб завелось все и везде работающий докер и 1 компоуз гарантирует, что будет работать везде можно не засорять ОС всяким мусором и быстро тестировать одной командой поднять монгу, сразу с нужными схемами, потестить и грохнуть автоматически

линукс софт вообще отлично контейнизируется

имейджы маленькие

но у нас есть и одно приложение под винду и там тоже ок

очень удобно арендовать свежую машину, поставить докер, выкачать образ и запустить

без лишней настройки

Google
Oleg
13.06.2018
19:49:24
вкупе с ансиблом и ранчером/кибернетс, можно просто разливать образы на тысячи хостов в автоматическом режиме только ссшники вбить

но нам такое особо не надо :)

Artem
13.06.2018
19:49:51
в общем надо почитать

Константин
14.06.2018
10:32:48
о как) надо будет попробовать. у меня просто доманшний десктоп обычно для тестирования используется, все равно работаю только на ноуте.
Я ж тебе расказывал что разворачиват в докере) Гдето даже валяется yml под это дело. Найду скину)

Andruha
14.06.2018
13:45:00
Приветы. Использую mongoose, есть модель game, которая включает в себя items: [{ type: Schema.Types.ObjectId, ref: 'item' }] Как правильно из items удалять в модели game?

Stepan
14.06.2018
13:54:07
$pull

при апдейте

Andruha
14.06.2018
13:57:08
вот так сделал пока const posToDelete = game.items.findIndex(e => e.id === model.id); game.items.splice(posToDelete, 1); await game.save();

но почему-то понадобилось несколько раз это пройти, удаляло по половине айтемов за проход. Типа изначально было 16 элементов на удаление, после первого прохода осталось 8, после еще прохода осталось 4 и тд )

Nick
14.06.2018
14:03:09
а вам очистить?

Andruha
14.06.2018
14:17:34
да, вот так делаю - не пашет const asd = await game.update({ id: id }, { $pull: { items: { apply: null } } });

ошибок никаких

Nick
14.06.2018
14:20:51
а просто $set:{items:[]} не пробовали?

Andruha
14.06.2018
14:22:10
а мне не все надо удалять, а только где в items apply=null

Nick
14.06.2018
14:23:30
db.survey.update( { }, { $pull: { results: { $elemMatch: { score: 8 , item: "B" } } } }, { multi: true } )

из примера к пулу

https://docs.mongodb.com/manual/reference/operator/update/pull/

Andruha
14.06.2018
14:24:31
спс

без multi: true ошибок нет, но и ничего не удаляет, с multi ошибка callback.apply is not a function

Google
Andruha
14.06.2018
14:32:23
попробую еще в нодежс чате спросить, спасибо вам

Продолжается все-таки моя эпопея)) использую mongoose хочу сделать удаление определенных элементов в документе $pull: { items: { apply: null } } - не канает пробовал удалять по одному $pull: { items: { _id: id } } - так ок то есть какая-то проблема в условии apply: null, но как сделать правильно я не могу найти

Nick
14.06.2018
19:38:38
указывайте elemMatch

а не фильтр

Andruha
14.06.2018
20:01:19
В доке написано, что одно и тоже

Nick
14.06.2018
20:14:07
а пробовали?

Andruha
14.06.2018
21:21:41
Да

Nick
14.06.2018
23:21:36
Да
дико извиняюсь за отсылку к elemMatch, поспешил и не вчитался в доку In fact, the following operation will not pull any element from the original collection.

кто ж доудмался не выделить большими красными жирными буквами will not pull

да, вот так делаю - не пашет const asd = await game.update({ id: id }, { $pull: { items: { apply: null } } });
есть предположение что вы забыли подчеркивание перед _id

Andruha
15.06.2018
06:24:59
есть предположение что вы забыли подчеркивание перед _id
Тоже нет) я же пробовал с таким условием $pull: { items: { _id: id } } и оно работает, потом поменял _id: id на apply: null - и перестало удалять. Мне кажется, тут как-то иначе нужно с null сравнивать.

Nick
15.06.2018
07:10:08
я вчера протестировал в монгошеле и никаких доп действий при работе с нулом не требовалось

Nick
15.06.2018
07:32:59
пример теста можно?
добавил в коллекцию несколько объектов вида { "items" : [ { "id" : 1, "apply" : null }, { "id" : 2, "apply" : true }, { "id" : 3, "apply" : null } ] } потом выполнил ваш запрос на апдейт db.getCollection('tst2').update( { }, { $pull:{items:{apply:null}}}, { multi: true } ) и вставленные доки првратились в { "_id" : ObjectId("5b236b2d0c3f7c79b6fdea75"), "items" : [ { "id" : 2, "apply" : true } ] }

Andruha
15.06.2018
07:39:18
А может быть связано с тем, что items я заполняю через populate?

Nick
15.06.2018
07:39:54
так гляньте как выглядят доки в базе

Andruha
15.06.2018
07:43:43


Nick
15.06.2018
08:01:49
Покажите значение с нулом, которое пытаетесь удалить а не левые доки

Andruha
15.06.2018
08:02:53
а я не знаю, как в studio 3t сделать populate, это же по-моему чисто монгусовская фишка?

Nick
15.06.2018
08:03:35
Вот все проблемы орм налицо - люди не умеют работать с бд

Google
Nick
15.06.2018
08:04:28
Возьмите кусок кода на монгусе и выполните на тестовой коллекции на тестовых данных

Andruha
15.06.2018
08:05:13
Вот все проблемы орм налицо - люди не умеют работать с бд
я умею работать с бд, более 12 лет с ораклом и мускулом ) а вот mongo только щупаю на новом проекте

Nick
15.06.2018
08:05:16
Тот этап, после которого в доках должны моявиться нулы

Andruha
15.06.2018
08:05:55
Возьмите кусок кода на монгусе и выполните на тестовой коллекции на тестовых данных
спасибо, что не отказываете в помощи, позже буду за ПК и попробую

Так я и смотрю. В монго еще не все освоил)

Павел
15.06.2018
08:49:27
Добрый день, подскажите пожалуйста почему может не проходить аутентификация при коннекте по uri: mongodb://user:pass@host:port/schema но при этом по uri mongodb://user:pass@host:port/?authSource=schema коннектится успешно пользователь user создан именно в схеме schema (не в admin)

Nikita
15.06.2018
08:50:01
Вы разве не ответили сами на свой вопрос?

Павел
15.06.2018
09:10:33
есть еще одна БД (в настройке которой я не участвовал), с первого взгляда настройки идентичны, во второй БД успешно проходит коннект в обоих случаях

вопрос снимается, была ошибка/опечатка в строке коннекта

Andruha
15.06.2018
09:58:12
Тот этап, после которого в доках должны моявиться нулы
Вощем оказалось вот что, это работает const asd = await Game.update({ _id: id }, { $pull: { items: { apply: null } } }); Но только если в коллекии items есть хоть один элемент, где apply is not null, если все null, то ничего не удаляет, если есть что-то not null, то удаляет все, кроме элемента с not null

yopp
15.06.2018
11:39:04
https://www.mongodb.com/blog/post/secondary-reads-mongodb-40?jmp=twt&utm_source=4244&utm_medium=TWITTER&utm_term=4&linkId=53032474

Stable: 3.6.5 (May 25, 2018), Bugfix: 3.4.15 (May 16, 2018), Upcoming: 4.0.0-rc3 (Jun 6, 2018) MongoDB quick overview/production notes: https://www.percona.com/live/e17/sites/default/files/slides/Running%20MongoDB%20in%20Production%20-%20FileId%20-%20115299.pdf 4.0.0-rc3: https://groups.google.com/forum/m/#!topic/mongodb-user/M6KivWS6Ky4 3.6.5: https://docs.mongodb.com/manual/release-notes/3.6/#may-29-2018 3.4.15: https://docs.mongodb.com/manual/release-notes/3.4/#may-16-2018 3.2.20: https://docs.mongodb.com/manual/release-notes/3.2/#may-10-2018 (End of life: September 2018) 3.0.x: Support ended February 2018

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