@MongoDBRussian

Страница 68 из 342
Aleksandr
28.02.2017
00:10:59
Так больше нравится)
мне вообще загран выдали на Ivanitskyi, жлобы

Алексей
28.02.2017
12:18:00
интересно
а ларчик просто открывался. не хватало индекса.

Google
Алексей
28.02.2017
12:33:42
случайно

Артур
28.02.2017
14:18:16
Друзья, собрал в одном месте 132 чата для программистов - @Chats_Developers. Пользуйтесь на здоровье.

GNU/Docker
01.03.2017
11:28:18
Что

@dd_bb приди порядок наведи)

Alex
02.03.2017
07:45:04
Приветы

Есть вопрос)

В наличии коллекция справочных данных с 1.6 миллиона записей. В системе есть пользователи, их не миллионы, но тоже достаточно . Каждый пользователь из справочных данных может выбрать несколько "любимых". Надо организовать поиск справочных данных так, чтобы каждый пользователь видел сначала свои "любимые" справочные данные, а потом все остальные.

Навскидку есть пара решений, но все они выглядят весьма корявыми

Поиск - по текстовому полю + гео-поиск с geoJSON

Peter
08.03.2017
08:31:27
Peter Shved: как в mongodb проверить есть ли значение в массиве пример: { _id : 1, list : [{ num: [4,6] }, { num: [3,8] }, { num: [6,1] }] } делал $filter: { input: '$list', as : 'item', cond : { $eq: ['$$item.num', 3] } } не работает -_-

Sergey
08.03.2017
08:44:37
Я просто проверял существование нулевого элемента

Или речь про вхождение элемента, а не пустой массив?

Тогда $in просто

Google
yopp
09.03.2017
13:42:15
https://github.com/torodb/torodb

Интересненько

Sergey
09.03.2017
16:22:03


Nick
10.03.2017
13:53:59
делаю эксплейн агрегацию по дням: db.docs.explain().aggregate({ $group:{ _id:{ year:"$value.meta.year", month:"$value.meta.month", day:"$value.meta.day" }, totalCount:{$sum:1} } }) причем есть индекс { "value.meta.year" : 1, "value.meta.month" : 1, "value.meta.day" : 1 } однако план не использует индекс: { "stages" : [ { "$cursor" : { "query" : {}, "fields" : { "value.meta.day" : 1, "value.meta.month" : 1, "value.meta.year" : 1, "_id" : 0 }, "queryPlanner" : { "plannerVersion" : 1, "namespace" : "mydb.docs", "indexFilterSet" : false, "parsedQuery" : {}, "winningPlan" : { "stage" : "COLLSCAN", "direction" : "forward" }, "rejectedPlans" : [] } } }, { "$group" : { "_id" : { "year" : "$value.meta.year", "month" : "$value.meta.month", "day" : "$value.meta.day" }, "totalCount" : { "$sum" : { "$const" : 1.0 } } } } ], "ok" : 1.0 }

почему не используется индекс?

yopp
10.03.2017
13:54:24
ещё один

выстрели в лицо тому, кто предложил тебе такой _id

Nick
10.03.2017
13:55:21
какая разница если я по нему агрегировать должен?

yopp
10.03.2017
13:56:17
1) у _id лимит на 1024 байта 2) индекс на весь _id работате только для ПОЛНОГО ТОЧНОГО СОВПАДЕНИЯ

как и для любого индекса по целиком вложенного документа

такой _id — грубейшая ошибка проектирования

я ещё уверен что там кроме year/month/date ещё поля есть

Nick
10.03.2017
13:58:09
само собой есть, это же документ. _id у доков монговский

мне же надо агрегацию сделать по данным а не по ключу

yopp
10.03.2017
13:58:30
так, кажется я ебусь в глаза

да, ебусь. окей!

ptchol
10.03.2017
13:58:44
согласен

yopp
10.03.2017
13:58:56
сорян ;)

Nick
10.03.2017
13:59:03
там идет зпрос, индекс, эксплейн план. если вдруг непонятно

yopp
10.03.2017
13:59:10
я не туда посмотрел

Google
yopp
10.03.2017
13:59:44
почему не используется индекс?
а почему он должен использоваться?

Nick
10.03.2017
14:00:10
ну типа же есть покрывающий индекс, в котором ест ьвсе данные

yopp
10.03.2017
14:00:33
ммм

Nick
10.03.2017
14:00:41
уже не в первый раз сталкиваюсь и мне не ясна логика монги как она строит планы

yopp
10.03.2017
14:01:07
1) у тебя там вложенный документ. запросы по вложенным документам не могут быть index-only by design

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

(по крайней мере до 3.4 так было, в 3.4 не смотрел ещё, но скорее всего ничего не изменилось)

Nick
10.03.2017
14:02:38
т.е. для нормального использования покрывающего индекса в агрегации мне надо вытащить нужные мне поля на самы верхний уровень дока?

или все еще хуже и только match и sort могут юзать индексы?

yopp
10.03.2017
14:04:59
только $match

afaik sort в AF никак вообще индексы не умеет

но опять-же, данные немного устаревшие, может уже поправили. они в 3.4 нормально там всего починили

Nick
10.03.2017
14:05:35
печаль

yopp
10.03.2017
14:05:55
более того, планировщик не все оптимизации может к AF применить

Nick
10.03.2017
14:05:55
хотя бы понял в чем дело, дальше уже поищу сам

yopp
10.03.2017
14:06:02
в доке всё есть, начни с неё

Dmitry
10.03.2017
14:10:39
а что монга так плоха?

Stefan
10.03.2017
14:11:15
а что монга так плоха?
Ты не понял суть.

Dmitry
10.03.2017
14:11:35
Ты не понял суть.
не ну я понял что зоопарк непонятно чего

Google
Dmitry
10.03.2017
14:12:09
наверное да, таки не понял :)

Nikolay
11.03.2017
16:06:22
Это нормально, что я не могу за несколько часов локально поднять службу mongod? Сначала один код ошибки - гуглишь, решаешшь. Затем второй - гуглишь, решаешь. И так пару раз, пока круг не замыкается...

Алексей
11.03.2017
16:07:17
Службу? Виндовс чтоли?

Nikolay
11.03.2017
16:07:50
service. Нет, убунту 16.04

Алексей
11.03.2017
16:08:27
Ставится с пакетов на раз

Alex
11.03.2017
16:08:32
ну это же не постгрес, где всё просто и логично =)

Nikolay
11.03.2017
16:09:28
ну, по мануалам оно так и выглядит, что ставится за раз. Но проверяешь статус - лежит

GNU/Docker
11.03.2017
16:12:04
Вангую банальное неумение читать.

Nikolay
11.03.2017
16:14:18
Не могу инициализировать replica set. Добавил в mongod.conf вот это: replication: replSetName: "001-rs". Сейчас выдает вообще 14 ошибку. А вообще я пытаюсь поднять rocket chat

рили

GNU/Docker
11.03.2017
16:19:31
А разве не пишется что-то кроме кода ошибки? Это же не венда.

Stefan
11.03.2017
16:41:56
Запускаю сам через mongod с параметрами.

У меня все серверы на Debian, так что есть вероятность, что с сервисом из пакетов в Ubuntu тоже что-то не так.

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