@MongoDBRussian

Страница 318 из 342
Bodya
01.10.2018
16:20:13
Nick
01.10.2018
16:20:26
и на них всего 200рпс?

Bodya
01.10.2018
16:20:34
Nick
01.10.2018
16:20:47
а что показать надо?)

Google
Bodya
01.10.2018
16:21:13
Nick
01.10.2018
16:21:31
нагрузочное тестирвоание провести и выдать мифические цифры или у вас SLA и требовния по пропускной способности есть7

Nick
01.10.2018
16:22:24
сделайте все в батчи

и заливайте прям на серваке а не с локальной машины

а если есть возможность заиспользовать mongodump/mongorestore то будет еще лучше

это если показать попугаев на базе, если на приложении - то это уже сугубо пробелма софта

Пасюк Лошадкин
01.10.2018
16:42:44
Здравствуйте

Работаю с монго почти пол года, все было понятно. Но эта ошибка выбила меня из понимания

pymongo.errors.ServerSelectionTimeoutError: No replica set members match selector "Primary()"

Что это значит и как с этим бороться?

Alex
01.10.2018
16:56:56
Что это значит и как с этим бороться?
https://stackoverflow.com/a/38875538/5910553

Пасюк Лошадкин
01.10.2018
16:57:39
Уже.

Google
Пасюк Лошадкин
01.10.2018
16:57:46
Просмотрено

Переведено

Но проблема не решается

Причем с одного репозитория я могу обратиться к этой датабазе, а с другого нет

Оба репозитория на одном аккаунте

Пасюк Лошадкин
01.10.2018
19:41:12
Может фильтрация по IP?
Нет, все айпи доступны

0.0.0.0

Bodya
02.10.2018
08:16:20
Как взять только 20 елементов массива?

AstraSerg
02.10.2018
08:26:50
Как взять только 20 елементов массива?
Только unwind приходит в голову

Constantin
02.10.2018
08:27:16
Оба репозитория на одном аккаунте
А можете сказать, что вы имеете в виду под репозиторием?

pymongo.errors.ServerSelectionTimeoutError: No replica set members match selector "Primary()"
Скорее всего у вас нет избранного Primary, или в строке подключения к репликасету у вас не указан текущий Primary сервер в составе реплики

AstraSerg
02.10.2018
08:29:28
Нет, все айпи доступны
0.0.0.0 - это скорее всего не из той оперы. Это, видимо, где база слушает, а я про фильтрацию фаерволом.

Bodya
02.10.2018
08:29:57
Только unwind приходит в голову
Мне нужно брать 20 елементов начиная с n елемента

AstraSerg
02.10.2018
08:31:19
Мне нужно брать 20 елементов начиная с n елемента
Всё равно unwind, только с опцией includeArrayIndex

Пасюк Лошадкин
02.10.2018
08:31:51
Скорее всего у вас нет избранного Primary, или в строке подключения к репликасету у вас не указан текущий Primary сервер в составе реплики
Просто понимаете, в чем проблема... Всё работало до вчерашнего дня. А вчера он мне сообщает эту ошибку (код не тронут был больше месяца)

Может ли это быть из-за Роскомнадзора?

Constantin
02.10.2018
08:32:16
Мне нужно брать 20 елементов начиная с n елемента
db.posts.find( {}, { comments: { $slice: [ 20, 10 ] } } ) Попробуйте $slice

AstraSerg
02.10.2018
08:32:57
Может ли это быть из-за Роскомнадзора?
маловероятно, РКН требует блокировать только 80-ый и 443-ий порты

Google
Constantin
02.10.2018
08:33:25
Может ли это быть из-за Роскомнадзора?
Все может быть. Код тут скорее всего не причем. Возможные варианты: 1. У вас упал Primary, выбрали другого Primary и его адреса нет в вашем Connction String, а все хорошо работало, потому что он не падал 2. У вас были прописаны все адреса, но один сервер, который был избран Primary более не доступен из вашей сети

маловероятно, РКН требует блокировать только 80-ый и 443-ий порты
По опыту они режут всю подсеть со всеми портами, просто по IP адресу

Пасюк Лошадкин
02.10.2018
08:34:44
Просто бот у меня расположен на хероку, а ркн, как известно, начал блокировать его адреса

Constantin
02.10.2018
08:34:49
А как выбрать Primary?
MongoDB сама это делает

Просто бот у меня расположен на хероку, а ркн, как известно, начал блокировать его адреса
Руками получается подключиться? Можете показать Connection String?

Пасюк Лошадкин
02.10.2018
08:35:22
За 30 минут 1 раз смог войти через компасс

Constantin
02.10.2018
08:36:28
Нет, бесконечное подключение
Попробуйте из-под VPN с полным проксированием трафика или с сервера не в России

Пасюк Лошадкин
02.10.2018
08:36:43
Пробовал через телефон

С впном

Не выходит

Пасюк Лошадкин
02.10.2018
08:36:58
Timeout

Constantin
02.10.2018
08:37:37
Если будет такая же фигня, то РКН, если нет, то вам надо искать ошибку в том как вы подключаетесь, или в том, в каком состоянии сейчас находится база

Can't use $slice in array
Не понял вас

Bodya
02.10.2018
08:38:24
Constantin
02.10.2018
08:38:38
Покажите запрос который вы делаете

И на какую структуру данных

Google
Bodya
02.10.2018
08:39:07
код: const mongoose = require('./config/mongoose')(); const mealSchema = require('./infrastructure/schemas/mealSchema') Meal = mongoose.model("Meals", mealSchema) async function f(){ console.log(await Meal.find({},{meals: {$slice: [20, 10]}})) } f()

Constantin
02.10.2018
08:39:29
https://docs.mongodb.com/manual/reference/operator/projection/slice/#slice-projection — собственно $slice для массива и сделан

Bodya
02.10.2018
08:40:17
module.exports = new Schema({ name: String, imageUrl: String, meals: [{ name: String, description: String, ingredients: [String], price: Number }] })

CFFTRP
02.10.2018
08:43:01
По каким причинам может не отрабавать set() ?

data.set({ value: 1 } - не меняет ничего. Логируется тот же исходный объект

Constantin
02.10.2018
08:44:25
module.exports = new Schema({ name: String, imageUrl: String, meals: [{ name: String, description: String, ingredients: [String], price: Number }] })
Проверьте в базе, чтобы у вас действительно там был массив и достаточное количество данных по $slice который вы делаете, ну и что MongoDB нормальной версии

data.set({ value: 1 } - не меняет ничего. Логируется тот же исходный объект
Если это Mongoose модель, то проверьте схему, он делает set и get методы только для полей, которые есть в схеме

AstraSerg
02.10.2018
08:45:57
Timeout
Попробуйте telnet <ip сервера монги здесь> 27017 с хоста за границей, с того же хироку

Bodya
02.10.2018
08:49:49
*базой



Constantin
02.10.2018
08:51:10
Тогда не знаю, чем вам помочь, попробуйте воспользоваться $slice через терминал

Пасюк Лошадкин
02.10.2018
09:10:23
AstraSerg
02.10.2018
09:10:55
Пасюк Лошадкин
02.10.2018
09:10:58
pymongo.errors.ServerSelectionTimeoutError: No primary available for writes

Constantin
02.10.2018
09:11:14
Пришлите Connection String

Пасюк Лошадкин
02.10.2018
09:11:36
А где его взять?)

Google
Constantin
02.10.2018
09:11:38
Можете заменить IP адреса на рандомные по логике домены

Пасюк Лошадкин
02.10.2018
09:11:51
Просто раньше всегда всё работало, а тут навал ошибок

Constantin
02.10.2018
09:11:51
А где его взять?)
Ну вы же как-то подключаетесь к БД

Пасюк Лошадкин
02.10.2018
09:12:28
mongodb://egor5q:<PASSWORD>@db-shard-00-00-fej0s.mongodb.net:27017,db-shard-00-01-fej0s.mongodb.net:27017,db-shard-00-02-fej0s.mongodb.net:27017/admin?replicaSet=DB-shard-0&ssl=true

Это для компаса

AstraSerg
02.10.2018
09:13:04
pymongo.errors.ServerSelectionTimeoutError: No primary available for writes
Вам нужно подключиться к одной из нод и провести диагностику. для этого нужно понять, проблема ли это сети.

Constantin
02.10.2018
09:13:46
AstraSerg
02.10.2018
09:13:57
mongodb://egor5q:<PASSWORD>@db-shard-00-00-fej0s.mongodb.net:27017,db-shard-00-01-fej0s.mongodb.net:27017,db-shard-00-02-fej0s.mongodb.net:27017/admin?replicaSet=DB-shard-0&ssl=true
Это не РКН, соединение есть: [12:13:15] astraserg@astra:~$ telnet db-shard-00-01-fej0s.mongodb.net 27017 Trying 54.89.0.46... Connected to ec2-54-89-0-46.compute-1.amazonaws.com. Escape character is '^]'.

Пасюк Лошадкин
02.10.2018
09:14:24
Уже хорошо

Запрещает обращаться к датабазе

Constantin
02.10.2018
09:14:57
А что значит эта строка?
Что вы пытаетесь что-то записать, а у вас нет доступного мастера

Пасюк Лошадкин
02.10.2018
09:15:24
Что вы пытаетесь что-то записать, а у вас нет доступного мастера
А можно поподробнее: что за мастер, где его взять и как сделать доступным)

Constantin
02.10.2018
09:15:39
Все сводится к тому, что у вас отвалися Primary, и реплика не смогла избрать нового

Пасюк Лошадкин
02.10.2018
09:15:55
Тогда не надо

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