Antonina
Всем привет! У меня есть приложение на node экспрессе и я хочу привязать подключение к монго в глобальную переменную, чтобы с любой точки проекта смочь выбрать данные. Какие подводные?
Aʟᴇx
Aʟᴇx
Если ты собираешься с разных мест стучаться в базу, то есть риск, что потом запутаешься.
В самой переменной окружения ничего плохого нет
Antonina
Не будет проблем с подклбчением? Одно подключение для всех получается
Nickolay
Aʟᴇx
Aʟᴇx
S
здравствуйте, при удалении юзера должен очистить все связанные с ним коллекции куда я присваивал object id, куда копать?
Alex
В свой код
Alex
У монги нет связей как таковых
Alex
Все на уровне кода нужно делать
Adel
Добрый день, не могу понять как мне обновить документ с несколькими вложенностями. Есть документ:
{
name: 'Name document',
subdocs: [
{
name: 'Name subdoc',
array: ['a', 'b', 'c']
}
]
}
Как обновить через mongoose элемент 'a' массива у поддокумента 'Name subdoc'? Сразу прошу прощения за, возможно, глупый вопрос. Но не понял как правильно обновлять подобные вложенности.
Aʟᴇx
Adel
Aʟᴇx
Можете, пожалуйста, подсказать более лучше вариант схемы?
Окей, представь у нас есть юзер и статья. Юзер может быть автором нескольких статей, поэтому статья будет выглядеть так:
{
name: String;
author: ObjectID;
}
А юзер вот так:
{
name: String;
}
В итоге, когда нам нужно обновить статью с именем a, нужно просто написать:
db.articles.updateOne({"name": "a"}, {"$set": ...})
Aʟᴇx
Aʟᴇx
https://docs.mongodb.com/manual/applications/data-models/
Много раз кидали, это будет не лишним
Anonymous
Всем привет, можно задам сферический вопрос
какую базу взять под кейс (postgres или mongo)
микросервис shop
обычный магазин как везде, в котором есть сущности
- продавец
- товар
- сделки
Nick
Tsikhan
Всем привет! Подскажите пожалуйста почему на мастере и на слейве монги сильно отличаются размеры окна оплога? и как это можно исправить?
Dmitry
Всем привет, кто-нибудь знает как, используя MongoDB Compass и просматривая коллекцию посмотреть самые последние документы?
Сейчас: приходится в ручную «прощелкивать» по 20 элементов, получается если нужен документ №1000 то приходится жать 50 раз кнопку «вперед» ((
Bulat
Dmitry
Aʟᴇx
Aʟᴇx
Как вариант
Dmitry
Dmitry
Каждый раз приходится логин-пароль и хостнейм забивать - неудобно
Aʟᴇx
Aʟᴇx
И к тому же там последние подключения сохраняются
Anonymous
Приветствую.
В коллекции хранятся доки вида
{ timestamp: <value> }. Как вернуть список всех уникальных timestamp и их количества? Т. е. массив объектов вида
{
timestamp: <value>,
entries: <кол-во_timestamp_в_коллекции>
}
Значение timestamp, для которого ищем кол-во вхождений, приходит на запросе. Сейчас делаю так:
const entries = await Subscription
.find({ timestamp: req.params.timestamp })
.countDocuments();
// .limit(parseInt(req.params.limit, 10));
res.status(200).json({
timestamp: parseInt(req.params.timestamp, 10),
entries
});
Aʟᴇx
Anonymous
$group пробовал, но не сообразил, как его сдружить с потребностью принять timestamp из запроса.
Anonymous
Пробовал
const entries = await Subscription
.aggregate([
{ $project: {
timestamp: req.params.timestamp,
count: 7
}}
]);
count: 7 было для теста. Такой запрос вернул список всех timestamp с их моного _id.
Anonymous
Поделитесь кодом решения?
Aʟᴇx
https://docs.mongodb.com/manual/reference/operator/aggregation/group/
db.articles.aggregate( [
{
$group: {
_id: "$_id",
count: { $sum: 1 }
}
}
] )
Aʟᴇx
Думаю, что это именно оно
Anonymous
Возможно. Как в строку _id: "$_id" подать req.params.id? Мне нужны только те $_id, которые равны id из запроса.
В моём случае это timestamp, не id.
Aʟᴇx
Serhii
всем привет, сделал такой агрегейшин, нужно добавить условие что если все месседжи с полем readBy не включают в себя user.id, то только в этом случае не включать результат в массив, в случае если хоть одно поле readBy пустое то включать элемент в массив
[
{
$match: {
status: 'active',
'messages.readBy': {
$nin: [user.id]
}
}
}
]
yopp
Serhii
в текущем кейсе, если хоть одно поле readyBy включает данный айдишник, то обьект не возвращается
Tsikhan
yopp
если же он разный?
Поменять размер. Если монга 3.6 и позже, то
https://docs.mongodb.com/manual/tutorial/change-oplog-size/
Если 3.4 и раньше то
https://docs.mongodb.com/v3.4/tutorial/change-oplog-size/
Tsikhan
yopp
Ширина окна, да
yopp
В целом ширина окна это размер оплога / средний размер записи оплога.
Если нет лага то ширина окна будет примерно одинаковой.
Tsikhan
Joseph
Ребят есть ли возможность перебрать массив в агрегатной функции с выходом по условию for или while ???
yopp
$reduce
yopp
Но break там нет
yopp
Вы можете вместо break ничего не делать в $cond
Anonymous
Есть массив Integer'ов. Как в Монге отправить этот массив с запросом?
Сейчас у меня есть роут /api/subscriptions/prices/${tms}/${limit}, в котором для массива timestamps пробегаю по этому массиву и на каждом проходе отправляю текущее значение из массива (tms) в роут.
Получается 50 отдельных запросов. Как отправить массив в 50 значений tms, т. е. весь массив timestamps?
Joseph
yopp
yopp
Ну и пусть итерирует
Joseph
yopp
Абсолютно нет
yopp
У вас конкретная проблема?
yopp
Расскажите
yopp
У вас миллион записей?
Joseph
yopp
Тогда у вас нет проблемы
yopp
Не нужно
Joseph
Расскажите
Нужно находить пропуски в числовом массиве
yopp
Оптимизировать надо когда есть проблемы
yopp
Оптимизация без проблемы это грешновато
yopp
Выжигайте в себе это желание
yopp
Make it work, make it right, make it scale.
yopp
Хотите сделать класненько, сначала сделайте чтоб ваш продукт работал
yopp
Классенько у вас всё равно не получится, потому что придут пользователи и все испортят. Класненько это make it right, когда вы уже знаете как ваш продукт используется.
yopp
А оптимизация имеет смысл только тогда, когда вы видите реальные проблемы с производительностью. Например я до выкатки в продакшен не особо парюсь об индексах
yopp
Когда данных накопится и станут видны паттерны запросов требующие индексов, тогда можно и насоздавать. Не работает с существующими большими датасетами, но большой существующий датасет уже подразумевает что вы увидите реальные проблемы ещё до выкатки в продакшен