Size: a a a

2020 May 14

R

Roman in MongoDB Russian
CastError: Cast to ObjectId failed for value "{ dateOfDeactivation:
{ '$exists': true } }" at path "user" for model "Patient"
источник

y

yopp in MongoDB Russian
Co. In
Народ. Подскажите как выбрать юзеров по айдишкам из такой структуры?

https://mongoplayground.net/p/FHZBuTFRHrk

При условии что я не знаю custom:key у обьектов
Изменить схему таким образом, чтоб в пути до искомого ключа небыло неизвестных ключей, например

[
 {
   "type": "limit",
   "key": "custom:key:c",
   "role": "user",
   "user_id": "user:3"
 }

]
 

В обратном случае это будет очень дорогой поиск, в вашем случае вероятно через агрегацию и $objectToArray
источник

CI

Co. In in MongoDB Russian
Co. In
Народ. Подскажите как выбрать юзеров по айдишкам из такой структуры?

https://mongoplayground.net/p/FHZBuTFRHrk

При условии что я не знаю custom:key у обьектов
Ну не игнорьте) Помогите начинающему

Я кажется продвинулся
https://mongoplayground.net/p/YYeogplv7qL

но как теперь отфильтровать limit.v.user_id: "user:2"
источник

R

Roman in MongoDB Russian
const patients = await this.patientModel.find({"user": {"dateOfDeactivation": {$exists: true}}}).exec(); вот запрос что не так?
источник

DL

Daniil Lebedinsky in MongoDB Russian
Roman
const patients = await this.patientModel.find({"user": {"dateOfDeactivation": {$exists: true}}}).exec(); вот запрос что не так?
Не видя вашей схемы сложно сказать, но судя по ошибке у вас user это ObjectId, а не объект
источник

y

yopp in MongoDB Russian
Co. In
Ну не игнорьте) Помогите начинающему

Я кажется продвинулся
https://mongoplayground.net/p/YYeogplv7qL

но как теперь отфильтровать limit.v.user_id: "user:2"
источник

y

yopp in MongoDB Russian
но это не очень удачное решение
источник

IU

Ilia UTC+5 in MongoDB Russian
yopp
О каком софте идёт речь?
Без разницы
источник

CI

Co. In in MongoDB Russian
yopp
но это не очень удачное решение
Я это понимаю, коль оно так сходу не заводиться)
Какие есть варианты? Как понимаю таким образом боролись с уникальностью данных и перезаписи по ключу
источник

y

yopp in MongoDB Russian
Изменить схему на что-то в духе:

"limit": [
 {
   "key": "custom:key:c",
   "role": "user",
   "user_id": "user:3"
 }

]


Уникальность обеспечивать уникальным индексом
источник

y

yopp in MongoDB Russian
Vlad Pavlenko
всем привет.
такой трабл. поднял 3 копии монго в реплсет режиме без аутентификации. провел rs.initiate со всеми нодами (1 - всегда праймери, 2 - приоритет 0, 3 - только арбитр)
зашел на 1 ноду, создал юзера с правами root
поставил во всех 3 нодах флаг —auth и перезапустил все монги
теперь не могут подняться две ноды с ошибкой
Member mongo2:27017 is now in state RS_UNKNOWN due to authentication issue.
Unable to reach primary for set rs0

и основная имеет статус RECOVERING
как можно это исправить?
Попробуйте сначала создать stand-alone ноду с аутентификацией и уже позже конвертировать её в реплику
источник

y

yopp in MongoDB Russian
И проверьте что у вас в конфигурации нет настройки cluster level аутентификации
источник

VP

Vlad Pavlenko in MongoDB Russian
была проблема что надо было создать ключ и пробросить на все ноды через keyFile
источник

y

yopp in MongoDB Russian
Ага, значит вы включили обе системы аутентификации: и пользовательскую и для кластера
источник

y

yopp in MongoDB Russian
4.2.6 (Apr 21) ◦ 4.0.18 (Apr 15) ◦ 4.4.0-rc5 (May 9)

Плейграунд для запросов
Документация
Официальные курсы (Бесплатно)

Stable: 4.2.6 ◦ Bugfix: 4.0.18
Legacy: 3.6.18 (May 1) ◦ Beta: 4.4.0-rc5

По вопросам платной поддержки и покупки лицензий пишите @dd_bb

☠️:  3.4.23 (Jan ‘20), 3.2.21 (Dec ’18), 3.0.15 (May ’17)
источник

CI

Co. In in MongoDB Russian
А тут у вас два условия в $match и в cond, это для оптимизации?

https://mongoplayground.net/p/f5OH6laHswT

Такое выглядит более понятно, хотя предположу что оно преобразует всю таблицу и потом по трубе передаст в match
источник

R

Roman in MongoDB Russian
почему когда я делаю запрос такой
> db.patients.find({ }, {_id: 1, 'user.updatedAt': 1}).count()

или такой
> db.patients.find({ }, {_id: 1, 'user.email': 1}).count()

мне приходит один и тотже резулбтат если в бд они разные
источник

y

yopp in MongoDB Russian
Эти два запроса возвращают одинаковый набор документов, в данном случае все, такак фильтр пустой ({}). Вторым аргументом указывается проекция, т.е. список полей которые будут возвращаены в резульате и не влияет количество возвращённых в результате выборки документов
источник

R

Roman in MongoDB Russian
yopp
Эти два запроса возвращают одинаковый набор документов, в данном случае все, такак фильтр пустой ({}). Вторым аргументом указывается проекция, т.е. список полей которые будут возвращаены в резульате и не влияет количество возвращённых в результате выборки документов
Мне просто надо, отобрать все записи у которые есть определенное поле
источник

y

yopp in MongoDB Russian
Roman
Мне просто надо, отобрать все записи у которые есть определенное поле
источник