@MongoDBRussian

Страница 95 из 342
Igor
03.06.2017
10:57:20
так что я бы не ручался, что там вообще такой запрос можно сделать

а 400 возвращается на одинарные кавычки

хочется странного [x]

yopp
03.06.2017
10:58:04
Т.е. Тебе нужно найти документ, в котором поле posting.key_auths является массивом, а тебе нужно чтоб любой из эелементов полностью совпадал с какой-то строкой?

Google
Pavel
03.06.2017
10:58:18
вот я почему и задумался, правильно ли я запрос строю или это просто у них апи падает со сложного запроса

yopp
03.06.2017
10:58:42
Тебе не нужен eq

Igor
03.06.2017
10:58:58
$elemMatch: "STM6a4GQKwLokWPz6wJHzC5yEfxcu9dkW1GXhcJCZCfsMmRj8sg9V"

так ведь будет?

(я просто сам ненастоящий сварщик)

yopp
03.06.2017
10:59:14
Просто posting.key_auths: "foo"

Igor
03.06.2017
10:59:21
круто

а elemmatch для вложенных объектов, получается, скорее?

yopp
03.06.2017
11:00:03
Я же дал ссылку на документацию

Igor
03.06.2017
11:00:08
сорри :(

yopp
03.06.2017
11:00:33
Это частный случай, когда не нужно явно указывать условие совпадения.

Pavel
03.06.2017
11:00:43
{"posting.auth_key":%20"STM6a4GQKwLokWPz6wJHzC5yEfxcu9dkW1GXhcJCZCfsMmRj8sg9V"}

Google
Pavel
03.06.2017
11:00:48
ничего не находит

yopp
03.06.2017
11:01:33
Я в имени аттрибута ошибся

Там не auth_key, а key_auths

Pavel
03.06.2017
11:03:04
{"posting.key_auths":%20"STM6a4GQKwLokWPz6wJHzC5yEfxcu9dkW1GXhcJCZCfsMmRj8sg9V"} не находит

yopp
03.06.2017
11:03:50
А ты можешь сделать find().limit(1) и показать документ в монге?

Ну или если знаешь _id документа показать его представление в монге

Там есть прямой доступ btw, можешь поставить себе robomongo и сначала там попробовать.

Pavel
03.06.2017
11:07:58


yopp
03.06.2017
11:08:15
Ааааа

Вот и ответ на вопрос

Pavel
03.06.2017
11:08:21
ага, блин что то я сам не додумался посмотреть

))

хм

yopp
03.06.2017
11:09:30
`posting.key_auths.0: "foobar"`

Блин. Когда в iOS уже бэктики для кода поправят

Igor
03.06.2017
11:10:13
Блин. Когда в iOS уже бэктики для кода поправят
и в макоси (но у меня бета просто)

yopp
03.06.2017
11:10:39
В макоси, в нативном клиенте, всё норм

Pavel
03.06.2017
11:18:05
{"posting.key_auths.0":%20"STM6a4GQKwLokWPz6wJHzC5yEfxcu9dkW1GXhcJCZCfsMmRj8sg9V"} все равно не находит

yopp
03.06.2017
11:19:00
Через веб или если в монгу запрос кидать?

Сдаётся мне что у них веб апи очень плохое

Google
Pavel
03.06.2017
11:26:53
нет, просто с питона запросы делаю



Igor
03.06.2017
11:27:39
А чё не сразу в монгу?

или апи/бд не твое? (ну, хотя да, что, в общем-то, логично)

Pavel
03.06.2017
11:28:19
не мое, мне просто нужно получить моего юзера по ключу и все)

yopp
03.06.2017
11:45:10
А что 1 в конце значит?

Можешь попробовать искать совпадение по значению-массиву [foo, 1]

Тогда не надо .0 указывать

Можно ещё дикое `key_auths: {$elemMatch: {$elemMatch: {$eq:<string>}}` попробовать.

Это семантически ближе к тому что ты хочешь. По одному документу сложно сделать вывод как формируется массив массивов.

Но если там на каждую запись по массиву, то с .0 семантически не очень верно.

db.getCollection('Accounts').find({ "posting.key_auths": {$elemMatch: { $elemMatch: { $eq: "STM6a4GQKwLokWPz6wJHzC5yEfxcu9dkW1GXhcJCZCfsMmRj8sg9V" }}} })

это я через робомонгу попробовал

находит.

интересная идея блокчейн через монгу высунуть публично :)

Pavel
04.06.2017
01:52:11
интересная идея блокчейн через монгу высунуть публично :)
Спасибо большое! работает :) Да, есть и sql базы открытые для steemit блокчейна

Nick
05.06.2017
09:40:21
@dd_bb подскажи я правильно понял, что для ручного задания разбивки на чанки при шардировании нужно использовать зоны? а именно вручную порабивать на чанки нельзя?

видимо мне нужен явный сплит

разобрался, если кому интересно https://docs.mongodb.com/manual/reference/command/split/

Google
Фёдор
05.06.2017
10:45:13
Народ, как лучше организовать связь many-to-many? Если быть точнее, то нужно миллионы юзеров добавлять в группы и иметь возможность быстро вытаскивать пользователей по группе

Если у миллионов документов будет массив с сотнями айди, это норм идея? Или есть варианты получше?

Nick
05.06.2017
14:10:38
где-нибудь есть хотя бы общее описание стейджей плана выполнения запросов? сейчас интересует SHARDING_FILTER и в чем разница в FETCH стейдже под ним и над ним в плане?

просто не могу понять где этот этап выполняется: на шарде, на монгосе, в драйвере?

yopp
05.06.2017
14:16:51
Какую проблему ты пытаешься решить?

В драйвере в любом случае никаких шагов не выполняется, кроме как сделать bson и по wire protocol отправить его на сервер

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

Nick
05.06.2017
14:27:05
вообще задача в выборе индексов при шардировании. есть у меня шард ключ, и составной индекс где он является первым полем, всего три поля. Все при выборке по целому индексу все ок, но при попытке выбрать по второму и третьему - я попадаю на COLLSCAN. вот собственно приходится городить еще один индекс из этих двух полей. После чего прихожу к отсутствию необходимости в том индексе из трех полей, т.к. уже есть шардированный по первому полю и отдельный по двум полям

вот и сижу сравниваю планы выполнения

вот и двух из них было что SHARDING_FILTER и для него как инпут стейдж идет FETCH а в другом случае наоборот и хотелось бы понять какой импакт всего этого ибо стандарный план вообще не дает представления о масштабах пробелмы

yopp
05.06.2017
14:30:52
FETCH это «дай мне документ»

если у тебя не index-only query, то fetch это нормально

иначе как монга тебе документ вернёт :)

SHARDING_FILTER это постобработка документов на соотвествие запросу

так как бывают ситуации когда чанк есть и тут и там

если мне память не изменяет

если ты падаешь на collscan то шардинг тут нипричём совершенно

Nick
05.06.2017
14:33:25
ну это я подвел к чему я еще один индекс добавлял

yopp
05.06.2017
14:33:36
составной индекс сторого префиксный

Google
yopp
05.06.2017
14:33:52
т.е. если у тебя индекс {a: 1, b: 2: c: 3}, ты не можешь искать по b или c

Nick
05.06.2017
14:34:12
а при шардирвоании уникальынй индекс только с шард префиксом может быть?

yopp
05.06.2017
14:34:27
точнее можешь, но тогда тебе надо явно сказать что a тебя волнует мало, но это потребует чтений индекса по всем значениям a, что крайне не эффективно

(например сказав a: MinKey .. MaxKey)

Nick
05.06.2017
14:37:12
и еще один вопрос про _id_ индекс, он мне например не вперся вообще, но при создании шард коллекции он создается, причем если я указываю параметр чтобы его ен создавать, то он всравно создается не на первом шарде и тогда даже миграция перестает работать

мне от него не избавиться?

yopp
05.06.2017
14:37:37
никак

_id это праймари кей, по нему монга уникально адресует документы

если его не будет, монга не сможет отличать документы друг от друга

Nick
05.06.2017
14:38:42
а свой ей подсунуть можно?

так

значит должно быт ьименно поле _id

yopp
05.06.2017
14:39:15
ты можешь в _id писать всё что ты хочешь, если это удовлевторяет двум требовниям: значение уникально и не больше 1024 байт

Nick
05.06.2017
14:39:36
все догнал

yopp
05.06.2017
14:39:44
туда можно и документы воткнуть, но надо понимать что работать это будет только на полное совпадение

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