Andrew
Пришлось вот так сделать, может быть кто-то знает вариант получше? 🤔
Dmitrii
Dmitrii
я не думаю что это чат про монгус, лучше пойти в соответственный чат или почитать доку
Andrew
mongoose, почему для объектов в массиве select: false не работает?
Andrew
@dimonnwc3 может быть ты знаешь?
Andrew
у меня пока что нет распределения ответственности
yopp
у вас не тот класс занимается не той работой
yopp
что вы с этими данными потом делаете, что вам нужно их очищать от полей?
yopp
не нужно видеть где?
yopp
вы там где данные отображаете, там поля и фильтруйте
yopp
сделайте презентер, в него уберите логику
yopp
и потом везде где надо выводить данные скрывая поля в зависимоти от типа и используйте презентер с фильтром
yopp
под скрывать я имею ввиду вообще не отображать
yopp
вы вероятно в какой-то шаблон подставляете эти модели
yopp
вот внутри этого шаблона используйте паттерн презентер
Andrew
у меня vue используется
Andrew
если я на сервере не вырежу из ответа эти поля, то они будут видны в ответе))
yopp
я вам и предлагаю их вырезать _там_ где вы генерируете ответ
yopp
нет никакой разницы что это, json, html или xml
yopp
в той точке где вы сериализуете вашу модель в нужный вам формат, там и фильтруйте данные
Andrew
yopp
res.json -> new AccountPresenter(account).to_json()
yopp
и внутри AccountPresenter развлекайтесь как хотите
Andrew
спасибо за совет
Anonymous
Использую mongoengine для доступа к бд. Кто-нибудь может подсказать, где можно почитать про то, как писать юнит тесты для нее? Примеры?
Roman
доброго вечера!
проверьте меня пожалуйста
query.$expr = {
$gt: ['$following', {
$divide: ['$followers', 2]
}]
};
в моем запросе following в 2 раза больше чем followers у каждого документа, так?
Roman
потому что в результатах получается чет не оч так :/
yopp
а что получается в результатах?
Andrey
привет, нужно вставить в документ json у которого в некоторых ключах у объектов есть "." как это сделать с помощью mongoose?
Andrey
разобрался для .save({checkKeys:false}), жаль для insertMany не работает
Adel
Ребят, не могу сделать connect приложения в Mongodb Atlas. Использую zeit.co, он при развертывании создает новый ip. Поэтому whitelist IP не вариант. Кто-нибудь сталкивался с проблемой connect`а с zeit.co?
Dmitrii
whitelist 0.0.0.0/0
Do Some
Всем привет!
Подскажите как лучше реализовать сброс данных с базы на дешевой VPS на локальную машину?
Do Some
А то там ей поплохеет скоро =)
Do Some
Например вижу три варианта:
1. репликацией (не уверен что подходит, мало опыта)
2. командой копирования базы в консоли монги
3. выгрузка скриптом + удаление
yopp
yopp
У вас могут быть огромные проблемы с выборками по таким полям
Do Some
Не один раз, а периодически. Буду следить за объемом на VPS. Но вроде как и для периодического использования подойдет вариант, да?
yopp
А цель какая?
Do Some
Ресурсов мало на VPS. Сейчас не готов платить больше. Нужно сбрасывать на локальную машину в монгу. Пока что так.
Do Some
Кстати монгу прибили на VPS по причине нехватки памяти. База в монге весит 185 мБ. Не подскажете куда копнуть чтоб разобраться почему не хватило памяти и сколько она реально занимает в оперативке?
Do Some
Вроде нашел. .stats()
https://docs.mongodb.com/v3.6/faq/diagnostics/
Starting in 3.4, the WiredTiger internal cache, by default, will use the larger of either:
50% of (RAM - 1 GB), or
256 MB.
Получается с моим гигом оперативки монге доступно 256 мб?
yopp
yopp
до 500мб бесплатно
Mikhail
народ, всем привет
подскажите, как в монге сделать запрос со сравнением двух полей документа и вернуть только те документы, поля в которых подходят по условию?
например, есть документы с такой схемой:
{
name,
quantity,
amount
}
Нужно вернуть только документы, у которых quantity < amount
Mikhail
я гуглил, но нашел только сравнение с константами
Eugene
$where
Eugene
но там производительность тоскливая будет
Eugene
и есть вроде еще варианты, но не помню точно, через агрегации можно и $ROOT
Eugene
и судя по гуглу в 3.6 ввели это https://docs.mongodb.com/manual/reference/operator/query/expr/, достаточно полезная штучка
Mikhail
спасибо!
Mikhail
подскажите, а как обратиться к полям вложенного в документ объекта по аналогии с "$field" ?
Mikhail
"$field.property" ?
Mikhail
в общем еще раз убедился, что надо все и везде денормализовывать
yopp
yopp
или Aggregation Framework / $expr, но будет очень больно из-за того что вы будете проезжать по очень большому числу документов
yopp
вероятнее всего по всей коллекции
yopp
yopp
yopp
так-же как и всё нормализировать
yopp
надо искать баланс
Артём
Гайз, есть вопрос.
Есть сайт с категорией товаров и 2 языка. Товары должны отображаться в завимимости от языка.
Как лучше хранить товары? В одном документе или в двух?
yopp
для товара добавить поле-массив, куда класть названия стран для которых доступен товар
yopp
и локализовать поля
yopp
это если остатки учитываются вне зависимости от страны
Артём
Ну по сути у меня, например, название товара дожно быть на двух языках.
title: "Название 1" и title: "Name 1"
yopp
title.en => Name, title.ru => Название
Артём
Предлагаешь поле-массив с en и ru?
yopp
{
available_in_stores: ["ru", "en"]
title: {
en: "Title",
ru: "Название"
}
}
или
{
available_in_stores: ["ru", "en"]
title: [
{
lang: "en",
text: "Title"
},
{
lang: "ru",
text: "Название"
}
]
}
Артём
пробовал даже
en: {
title: ""
}
yopp
у второго варианта есть огромное приемущество: можно сделать индекс title.text и title.lang
yopp
т.е. искать можно будет сразу на всех языках
yopp
но второй вариант немного сложнее в реализации