Anonymous
Nick
а что показать надо?)
Anonymous
Nick
нагрузочное тестирвоание провести и выдать мифические цифры или у вас SLA и требовния по пропускной способности есть7
Anonymous
Nick
сделайте все в батчи
Nick
и заливайте прям на серваке а не с локальной машины
Nick
а если есть возможность заиспользовать mongodump/mongorestore то будет еще лучше
Nick
это если показать попугаев на базе, если на приложении - то это уже сугубо пробелма софта
Alex
https://stackoverflow.com/a/38875538/5910553
AstraSerg
Может фильтрация по IP?
Anonymous
Как взять только 20 елементов массива?
AstraSerg
Constantin
А можете сказать, что вы имеете в виду под репозиторием?
Constantin
Скорее всего у вас нет избранного Primary, или в строке подключения к репликасету у вас не указан текущий Primary сервер в составе реплики
AstraSerg
0.0.0.0 - это скорее всего не из той оперы. Это, видимо, где база слушает, а я про фильтрацию фаерволом.
Anonymous
AstraSerg
маловероятно, РКН требует блокировать только 80-ый и 443-ий порты
Constantin
Все может быть. Код тут скорее всего не причем.
Возможные варианты:
1. У вас упал Primary, выбрали другого Primary и его адреса нет в вашем Connction String, а все хорошо работало, потому что он не падал
2. У вас были прописаны все адреса, но один сервер, который был избран Primary более не доступен из вашей сети
AstraSerg
Constantin
MongoDB сама это делает
Constantin
Руками получается подключиться? Можете показать Connection String?
Constantin
Попробуйте из-под VPN с полным проксированием трафика или с сервера не в России
Anonymous
Constantin
Если будет такая же фигня, то РКН, если нет, то вам надо искать ошибку в том как вы подключаетесь, или в том, в каком состоянии сейчас находится база
Constantin
Anonymous
Constantin
Покажите запрос который вы делаете
Constantin
И на какую структуру данных
Anonymous
код: 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
https://docs.mongodb.com/manual/reference/operator/projection/slice/#slice-projection — собственно $slice для массива и сделан
Constantin
Anonymous
module.exports = new Schema({
name: String,
imageUrl: String,
meals: [{
name: String,
description: String,
ingredients: [String],
price: Number
}]
})
Gleb
По каким причинам может не отрабавать set() ?
Gleb
data.set({ value: 1 } - не меняет ничего. Логируется тот же исходный объект
Anonymous
Gleb
AstraSerg
Попробуйте telnet <ip сервера монги здесь> 27017 с хоста за границей, с того же хироку
Anonymous
*базой
Anonymous
Constantin
Тогда не знаю, чем вам помочь, попробуйте воспользоваться $slice через терминал
AstraSerg
У кого ж их нет?..
Constantin
Пришлите Connection String
Constantin
Можете заменить IP адреса на рандомные по логике домены
Constantin
Ну вы же как-то подключаетесь к БД
Constantin
Это ошибки одного рода
AstraSerg
Вам нужно подключиться к одной из нод и провести диагностику. для этого нужно понять, проблема ли это сети.
Constantin
AstraSerg
Это не РКН, соединение есть:
[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 '^]'.
Constantin
Что вы пытаетесь что-то записать, а у вас нет доступного мастера
Constantin
Все сводится к тому, что у вас отвалися Primary, и реплика не смогла избрать нового
Constantin
Это очень долго =)
Constantin
https://docs.mongodb.com/manual/replication/
AstraSerg
проверил все хосты, все доступны
Constantin
Попробуйте пробежаться по этому разделу
Constantin
Чтобы мы с вами на одном языке говорили, будет проще диагностировать
Constantin
Сперва проверить, что это действительно так
Constantin
Нужно подключиться к одной из баз, и посмотреть состояние реплики
Constantin
rs.status()
Constantin
можете сделать это через mongo
Anonymous
заработало
Anonymous
Constantin
Есть три сервера: один из них ведущий, второй ведомый, третий арбитр (или тоже ведомый)
1. Если ведущий выпадает, начинаются выборы
2. Результаты выборов, или избрали нового ведущего, или новые выборы, пока выборы идут работать не будет
Возможные проблемы:
1. Не избран ведущий, выборы продолжаются и продолжаются (обычно ошибка настройки реплики)
2. Нет доступа к ведущему с машины, с которой вы получаете такие ошибки
2.1. Возможно адрес ведущего не попадает в connection string — строку, по которой вы подключаетесь к реплике
2.2. Возможно ведущий не доступен с машины, с которой вы пытаетесь подключиться
Constantin
Constantin
Через утилиту mongo подключитесь к одному из узлов, и на нем попробуйте. Как только подключитесь в REPL должно будет быть написано что-то такое: PRIMARY:> или SECONDARY:> — это будет хороший знак
Anonymous
Старый код тоже работает
Anonymous
Если с магией работает значит всё окей
AstraSerg
Еще раз. Откройте командную строку и вбейте в ней mongo и нажмите ентер
AstraSerg
Получилось?
AstraSerg
Ок
Dmitriy
ребят, а в монге можно опредилить уникальный индекс схеме до создания документа? ткните носом в доку пожалуйста, если можно
Anonymous