
IGOR
04.01.2018
10:55:37
после PHP чет с Node не могу подружиться именно в рабое с БД, почему не сделали просто результат ложить в переменную и обрабатывать, непонимаю, вообще в голове не укладывается как блин с этим работать

keystr0ke
04.01.2018
10:56:13
это асинхронная модель, вы привыкните)

IGOR
04.01.2018
10:57:58

keystr0ke
04.01.2018
10:58:05
вот тут человек рассказывает ровно о такой же ситуации как у вас. Должны отпасть вопросы "почему так?" - https://habrahabr.ru/post/150788/

Google

IGOR
04.01.2018
10:58:41

keystr0ke
04.01.2018
10:59:26
просто не пытайтесь разрабатывать на NodeJS так же как разрабатывали бы на PHP, просто примите другую парадигму :)

Sergey
04.01.2018
11:09:43
Просто не пытайтесь разрабатывать на NodeJS. И на этом можно поставить точку

Alexander
04.01.2018
12:23:40

Vitaliy
05.01.2018
09:15:11
Всем привет. Я новичек в монго. Почему подсвечует инсерт? подскажите плз

Zloy Dobriy
05.01.2018
09:24:39
Опять.

Stepan
05.01.2018
09:26:25

Zloy Dobriy
05.01.2018
09:26:57
Вот, для кого кодпкны, сниппеты, и другие сервисы обмена когодом.

Stepan
05.01.2018
09:29:54

Zloy Dobriy
05.01.2018
09:30:24
Когда творят хуйню, - очень

Stepan
05.01.2018
09:31:38

Google

Zloy Dobriy
05.01.2018
09:32:42
Ты, нигде.
Адресовано чуваку со скриншотом кода

Stepan
05.01.2018
09:33:27
А ок, тогда все понятно :)

GNU/Docker
05.01.2018
09:42:47

Denis
05.01.2018
10:05:59

yopp
05.01.2018
10:45:59

Stepan
05.01.2018
12:49:43
Здравствуйте, можно ли через текст индекс сделать поиск по буквам слова ?

Zloy Dobriy
05.01.2018
13:32:37

Nick
05.01.2018
13:37:49

yopp
05.01.2018
13:38:13

Stepan
05.01.2018
13:42:50
Вот документ
{
"_id" : ObjectId("5a1db823f3f8316837512d54"),
"name" : "зщшгнекуцйрпавіфівапр"
}
Создал текст индекс.
Можна ли сформировать запрос через текстовый индекс так, чтобы вводя туда "з" мне также находило этот документ.
Так как сечас у меня работает только если искать целове слово "зщшгнекуцйрпавіфівапр"
Знаю, что так можно сделать через регекспу, но можно ли через $text ?

Sergey
05.01.2018
13:46:30
Full text search не так работает, он ищет формы слов

Stepan
05.01.2018
13:52:20
(

yopp
05.01.2018
13:52:34
https://jira.mongodb.org/browse/SERVER-15090
если поиск по префиксу поля, то можно обойтись регуляркой
https://docs.mongodb.com/manual/reference/operator/query/regex/#index-use
Но надо учитывать что это будет case sensitive

Google

Stepan
05.01.2018
13:56:23
Ну я так и сделал, можно в options поставить і

yopp
05.01.2018
13:56:32
Точнее оно будет работать и с case insensitive, но это будет менее эффективно

Aleksandr
05.01.2018
13:56:41
время поиска увеличишь с опцией i

yopp
05.01.2018
13:57:32
Иногда дешевле сделать два запроса или в самой регулярке указать обе формы /^a|A/. Но это надо тестировать

Sergey
05.01.2018
14:02:51

yopp
05.01.2018
14:03:15
где-то так, да

Nick
05.01.2018
14:05:25
Можно развернуть строку в массив букв и уже понему сделать индекс

Sergey
05.01.2018
14:05:27
Кстати, а появившиеся в 3.4 collations не решают вопрос регистра символов? Я так их и не пощупал толком.
https://jira.mongodb.org/plugins/servlet/mobile#issue/SERVER-29865
Регулярки не поддерживается, но есть вариант с $gte/$lt

yopp
05.01.2018
14:20:26

Crazy
05.01.2018
19:39:47
Привет. У меня возник вопрос.
На ubuntu 16.04 обычно у меня запускается монга, но когда я в конфиг файле пишу fork: true, то не запускается.
Не знаете в чем проблема?
Ниже 3 скрина.
1) статус монги
2 && 3) файл /var/log/mongodb/mongod.log

yopp
05.01.2018
19:47:46
Там же systemd
Зачем вам fork?

Crazy
05.01.2018
19:49:22
А когда делается репликация нужно обязательно ставить fork?
Я поэтому вставил

yopp
05.01.2018
19:50:57
Нет, не нужно
Fork нужен для запуска монги в фоне. Но если вы запускаете её как сервис, systemd решат эту проблему за вас

Crazy
05.01.2018
19:52:51
Окей, спасибо.
Есть еще такой момент, до добавления узлов, где /etc/host нужно прописать ip адреса и их имена, если у меня в настройках bind_ip: 0.0.0.0 это обязательно?

yopp
05.01.2018
19:58:18
0.0.0.0 это «все адреса». Т.е. пакеты будут попадать в монгу вне зависимости от dst адреса.
То никак не связанно с dns. Точнее так: по хорошему на всех машинах в будущем кластере в hosts должны быть имена всех других машин, включая уникальное имя текущей машины.

Google

yopp
05.01.2018
20:00:34
Но на деле проще развернуть локальный днс

Crazy
05.01.2018
20:02:49
Да у меня просто авторизация включена, поэтому.
Если я прописал 0.0.0.0 я могу сделать rs.add("ip") вместо rs.add("hostname"), или это не связано с этим?
Прошу прощение за незнания, я впервые работаю с базой данных, поэтому сложно разбираться в администрировании

yopp
05.01.2018
20:03:42
Кажется можно и по ip

Crazy
05.01.2018
20:04:18
Окей, спасибо, попробую

yopp
05.01.2018
20:04:41
Но если это продакшен, то лучше найти способ честно развернуть с dns
Так будет проще администрировать потом

Crazy
05.01.2018
20:06:04
Окей, благодарю
Так будет проще администрировать потом
Привет. У меня возникла еще одна трудность(
Репликацию я настроил.
Есть 3 сервера: primary, secondary, arbiter.
Когда я подключаюсь с другого сервера, например NodeJS сервер, как клиент и пишу такое:
mongodb://login:password@ip1:27017,ip2:27017/database?replicaSet=database&authSource=admin
Выходит ошибка:
MongoError: failed to connect to server [database-arbiter.me:27017] on first connect [MongoError: getaddrinfo ENOTFOUND database-arbiter.me database-arbiter.me:27017]
Не знаешь в чем дело?
А понял. Нужно было и на клиенте добавить все узлы реплики в файл /etc/hosts

yopp
06.01.2018
12:08:32
database-arbiter.me не резолвится

Crazy
06.01.2018
12:11:36
Не это я добавил в /etc/hosts -> ip database-arbiter.me
Просто у меня что-то добавление типа rs.add("ip") не получалось не помню какая ошибка была, а rs.add("hostname") добавляется после добавления в /etc/hosts

Dmitry
08.01.2018
11:10:48
Привет, курю маны и гугл на тему работы с $addToSet, насколько я понял оно работает только с полностью идентичными документами, если отличается хотя бы _id, то документ уже считается уникальным и вставляется в массив. Но вот никак не могу сообразить как вставить несколько документов за раз в массив, предварительно проверив существующие по конкретному полю. Направьте меня пожалуйста в нужную сторону?
Возможно нужно копать в другую сторону, например $push + $each или что-то такое

yopp
08.01.2018
11:15:17
Если я правильно понимаю задачу: то так не выйдет.
Либо проверяете на клиенте и делаете оптимистичный лок, либо по одному
Какую задачу вы в итоге хотите решить?

Dmitry
08.01.2018
11:25:38
У меня теги в виде поддокументов: {_id, title}, я передаю новый список тегов с клиента и мне нужно добавить те, которые есть в новом списке, но нет в монге (сравнивая по полю title), и удалить те, которых нет в новом списке, но есть в монге. Остальные не трогать.
Я могу это решить на стороне клиента, загрузив список документов с тегами, там обработать и отправить обратно через $set. Но я предположил, что можно это реализовать на уровне субд

yopp
08.01.2018
11:27:40
Уберите title и оставьте только _id. Тайтлы доставайте из коллекции с тегами отдельным запросом.
Если критична вставка. Если критично чтение, то тогда на клиенте.

Google

Dmitry
08.01.2018
11:29:21
хм, так это приём из релативной бд, где каждая сущность в своей коллекции и связана по _id, монга же не такая?

yopp
08.01.2018
11:30:19
Монга любая, в этом весь кайф. Можно выбрать любую градацию между денормализацией и нормализацией
Вообще я вижу мало смысла в хранении тегов в виде id
Либо вы храните просто текст, либо вы храните только id
Хранить оба значения — бессмысленно.
Обновление имени тега будет требовать обновления всех документов, а значит профита от хранения id нет

Dmitry
08.01.2018
11:34:03
я еще не осилил главу про индексацию, возможно с моей стороны это действительно было усложнением. Но я предполагал, что документ с тегом у меня будет сложнее, например не только title, но и нормализованный url и что-то еще...

yopp
08.01.2018
11:37:07
Сначала определитесь как вы будете использовать документ внутри приложения.
Плюс оцените что у вас преобладает: запись или чтение.

Dmitry
08.01.2018
11:38:20
как обычные теги, формировать ссылку на выборку типа
/tags/:tagName