Anonymous
ссылки на другую коллекцию - создать коллекцию чисто под ответы на комментаррии?
Anonymous
смысл какой в этом?
Anonymous
по мне так надо делать это одной коллекцией - Comments. при этом хранить во вложенном массиве не сам контент, а айдишники комментариев-ответов. вопрос - как это связать все?
Anonymous
и как быть с ответом на ответ к комментарию?? еще один массив вкладывать?))
Anonymous
а как быть с ответом на ответ к кответу к комментарию?
Anonymous
по любому должна быть практика как это должно быть устроено
Anonymous
по примеру реддит, если надо образец
Anonymous
там у них в данных светится типо parentID
Anonymous
AstraSerg
Почитайте здесь https://docs.mongodb.com/ecosystem/use-cases/storing-comments/ может это то что вам нужно
Anonymous
спс, почитаю. если кто-то сталкивался с такой задачей, напишите плз
Іван 🤙
Anonymous
У меня запрос _id:req.params.typeId meals.id: req.params.mealId видает null
Anonymous
req.params проверил
Lev
Типа
const { ObjectId } = require('mongodb')
const id = ObjectId(mealId)
db.collection...find({ _id: id })
Anonymous
Anonymous
Anonymous
Anonymous
Наверное ето потому, сто я юзаю монгус
Anonymous
Тупой Т9
Lev
Находит
Так если нул значит нет ничего по критериям
Lev
Yaroslav
Товарищи привет, подскажите пожалуйста в чем может быть проблема , реплика сет не собирается . секнодари ноды не могут авторизоваться у primary
UserNotFound: Could not find user test@admin
Юзер такой создан
rs0:PRIMARY> db.getUser("test")
{
"_id" : "admin.test",
"user" : "test",
"db" : "admin",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
В чем проблема не могу понять
SvPupok
а security file создан и один и тот же на всех нодах?
Заур
Предыдущий вопрос неправильный, он отменяется😀
Denis
Всем привет! А есть какая-нибудь mongo админка, которую можно запустить в докере и настраивать доступы к коллекциям и БД?
Constantin
Constantin
Я не силен в кубернетес, но разве к монге в нем запущенной, нельзя подключиться из вне кубернетеса?
Denis
Нет. Только форвардинг портов делать или vpn пробрасывать.
Constantin
Ну это я и имел в виду, вывести порт наружу с авторизацией, и подцепиться Атласом или Монгохабом
Denis
Это не всегда удобно.Но вопрос не про это. Монгохаб бесплатный клиент?
Constantin
Constantin
Я так понимаю, вы хотите phpmyadmin, только для MongoDB?
倫太郎
а зачем тогда компас?
Constantin
Я кроме mongo-express ничего нормального не слышал, так чтобы еще и не совсем мертвое. Думаю остальное сильно хуже будет по функционалу.
Denis
Constantin
Или использовать как мидлвару его, и написать небольшое NodeJS приложение, где по разным роутам будет доступ для разных пользователей
Constantin
Denis
Yaroslav
@f545_j_43g43u_jer3tfgu32fh3333 https://hub.docker.com/r/mongoclient/mongoclient/
Denis
Заур
Народ, куда копать, как это делается?
Операция обновления. Есть два условия. По первому условию из коллекции берём выборку документов. Теперь, если хотя бы один из документов не соответствует второму условию, отменяем весь процесс. Иначе, обновляем документы
Yurii
Yurii
Заур
Например пользователь сказал обновить какие-то данные. Но оказалось, что к какому-то из полей одного из документов у него нет доступа. Отменяется всё обновление
Yurii
Yurii
Ты решаешь не ту проблему. Проблема в том, чтобы в выборке не пришло ничего лишнего. По этому вернусь к первому совету. 2 условия в выборку для обновления
Заур
Заур
Представь ты пытаешься массово обновить описание статей в каком-то блоге. И вдруг по определенным условиям ты не можешь получить доступ именно к тому параметру статьи, куда ты пытаешься дорваться у ОДНОЙ из статей. Хотя ко всем остальным параметрам имеешь доступ
Заур
И если такое стало, нужно откатить изменения во всех уже изменённых
Yurii
И если такое стало, нужно откатить изменения во всех уже изменённых
я б все-таки сделал так, что все ограничивалось одной выборкой.
Но если ты так не можешь, тогда тебе надо думать в сторону временной коллекции, куда ты пишешь обновленные данные, и если все успешно то переносишь в основную, или выгрузить все в память, там сделать все изменения, а потом уже записывать. Но второй вариант плохой количеством ресурсов, особенно, если у тебя будет много данных
Заур
Заур
Начал транзакцию, проверил все данные, если есть ошибка, отмена транзакции. Если все норм, делаю update. Конец транзакции
Заур
Два запроса. Но из-за транзакции и блокировки, это слишком долго. Но у меня есть подозрения что в монге это можно одним запросом сделать. Вот в чём вопрос
Yurii
Заур
Max
Привет! кто-то сталкивался с тем что монга медленно выполняет запросы? либо же драйвер к ней ( node.js, mongoose). При чём по началу всё хорошо - скорость меньше 100 милисекунд, но через день-два скорость падает до 30 секунд.
1) Сервер и монга на aws-е в одном регионе.
2) Данных мало, меньше 10 Мб в сумме.
3) perfomans advisor на монге говорит что всё ок
4) На сервер тоже всё ок - ошибок нету, ресмурсов железки достаточно
5) Конфиг конекшена:
{
reconnectTries: 30,
reconnectInterval: 500,
poolSize: Number(process.env.DB_POOLSIZE) || 10, // process.env.DB_POOLSIZE = 20
socketTimeoutMS: 30000,
keepAlive: true,
useNewUrlParser: true,
}
5) раньше грешил на то что я делаю подписку на ченж стрим в монге:
const db = mongoose.connection;
db.once('open', () => {
console.log('db.once(open)')
io.on('connection', (socket) => {
log.info('Socket connected.');
const changeStream = db.collection('rides').watch();
changeStream.on('create', async () => socket.emit('drivers-map', await queryRidesCoordinates()));
changeStream.on('change', async () => socket.emit('drivers-map', await queryRidesCoordinates()));
});
});
но кажись проблема не в этом
Может есть у кого идеи в чём может быть проблема?
Yurii
Привет! кто-то сталкивался с тем что монга медленно выполняет запросы? либо же драйвер к ней ( node.js, mongoose). При чём по началу всё хорошо - скорость меньше 100 милисекунд, но через день-два скорость падает до 30 секунд.
1) Сервер и монга на aws-е в одном регионе.
2) Данных мало, меньше 10 Мб в сумме.
3) perfomans advisor на монге говорит что всё ок
4) На сервер тоже всё ок - ошибок нету, ресмурсов железки достаточно
5) Конфиг конекшена:
{
reconnectTries: 30,
reconnectInterval: 500,
poolSize: Number(process.env.DB_POOLSIZE) || 10, // process.env.DB_POOLSIZE = 20
socketTimeoutMS: 30000,
keepAlive: true,
useNewUrlParser: true,
}
5) раньше грешил на то что я делаю подписку на ченж стрим в монге:
const db = mongoose.connection;
db.once('open', () => {
console.log('db.once(open)')
io.on('connection', (socket) => {
log.info('Socket connected.');
const changeStream = db.collection('rides').watch();
changeStream.on('create', async () => socket.emit('drivers-map', await queryRidesCoordinates()));
changeStream.on('change', async () => socket.emit('drivers-map', await queryRidesCoordinates()));
});
});
но кажись проблема не в этом
Может есть у кого идеи в чём может быть проблема?
неправильные индексы, много навешал на модель монгуса...
когда ты делаешь выборки, в местах, где не надо менять данные ты делаешь .lean() ?
Max
да и опять таки - как этим обьяснить что перфоманс теряется со временем?
Max
я уже ума не приложу в чём трабла. поставил сервак пока на ребут каждые два часа (там даунтайм 5 секунд), незаметно, хотя это лютый костыль
Max
Max
а что к стати lean даёт?
Yurii
а что к стати lean даёт?
отвязывает твои данные из базы от монгуса, получаешь чистые обьекты. У нас выборка на 3.5к записей шла около 3 секунд, нативным драйвером - 0.7, а монгусом с lean() - 0.8
Max
отвязывает - это как?