inqfen
Сергей
спасибо
madspectator
спасибо. Работает. Но как тут работает логическое "или" $or: [{ $ifNull: ["$x", false] }]? Если у x есть значение, то ifNull вернет его. Но это значение не булевское. $or все равно посчитает это за истину?
Мне кажется, если x is not null, то надо возвращать не $x,а true. Если возвращать $x и значение x равно, например, нулю, то потом проблемы возможны. Вообще, я особо не вникал, что там по ссылке, просто скинул ссылку.
JASWGO
Всем привет. Такой вопрос. У меня есть коллекция с данными пользователя и у него есть поле purchased_items это массив String-ов в котором храниться альбомы который купил юзер.
Как лучше сделать это? Или лучше создать отдельную коллекцию и туда записывать?
Aleksandr
Зависит от объемов
Aleksandr
Размер одного документа ограничен
JASWGO
да там очень мало будет записей
JASWGO
всего пока 12 альбомов
Mikhail
всем здравствуйте. Товарищи, помогите с вопросом. есть документы типа {
"row1" : 111,
"row2" : 222
} нужно сделать запрос поиска по типу
SELECT * FROM table WHERE (row1+XXX) % row2=0
не получается нагуглить вообще никак работу с несколькими ключами в документе
Геннадий
Точно не помню, но может быть спасёт оператор $where
Геннадий
В него вроде должна передаваться функция на JavaScript, которая сделает всё, что угодно.
Mikhail
Egor
Добрый вечер. Напомните пожалуйста, на mongo 4+ если хочу создать юзера со всеми правами (суперадмин), достаточно ли ему дать роль root или надо каждую роль вроде readWriteAnyDatabase выдавать?
Vened
Vened
хотя нет, row2: 0 в данном случае будет как "отсутствие параметра row2"...
Mikhail
Vened
Возможно, пригодится оператор $mod
https://habr.com/ru/post/259219/#2
madspectator
Mikhail
Агрегацией?
а можно запрос написать для того чтобы к примеру сложить два поля из одного документа без агрегации?
Mikhail
madspectator
madspectator
Не знаю, я плохо разбираюсь в агрегации.
Mikhail
:)
madspectator
Так вы для начала поймите, создаёт ли агрегация overhead или нет. Если нет - вы избегаете несуществующую проблему.
Mikhail
yopp
yopp
Но запрос с вычислением в любом случае будет затратным и более эффективной стратегией является хранить вычисленное при вставк/обновлении значение
yopp
Иначе вы будете всегда делать вычислений по количеству документов
yopp
Mikhail
yopp
А что у вас за случай?
Mikhail
Нет, не создаёт
ну вот если я делаю проекцию данных, где в одном шаге скалдываю свое поле с моей переменной, в другом шаге делаю остаток от деления по одному из полей( не уверен что $mod проглотит как аргумент одно из значений документа), то где эта проекция тогда храниться? или она налету расчитывается?
yopp
Нет, не хранится
Mikhail
А что у вас за случай?
есть периодичность с которой нужно доставать документы. но если мы их не достали по времени, то между периодами их доставать не нужно. Пример: документ1 нужно доставать раз в день начиная с 12:05 к примеру, инфа об этом хранится в документе1, если мы пришли в 12:06, то забрать документ нужно будет в 12:05 следующего дня
Anonymous
madspectator
yopp
yopp
Это периодичность?
yopp
Зависит от того, выключали ли вы монгу/перезагружали сервер или нет
yopp
А компас на том-же сервере запущен?
Anonymous
Нет
yopp
Тогда вам необходимо включить аутентификацию и поменять bind в конфмге на 0.0.0.0
yopp
Сейчас у вас монга слушает на 127.0.0.1 и будет доступна только с этого хоста
yopp
Anonymous
yopp
я пока не придумал как по другому можно сделать
Зависит от вашей логики, но на мой взгляд лучше хранить точное время следующего выполнения и выбирать документы по этому полю: nextRunAt lte currentTime) Если поле не изменилось, значит задача была пропущена и тут вы уже сами можете решить когда её запускать.
yopp
Если у вас есть ограниченный бюджет на каждый монотонный период (например 5 минут) и вам нужна приоритизация, то в этом случае перед выполнением текущего периода, запрашивать задачи из предыдущего периода и решать что с ними делать — выполнять сейчас или переносить на следующие.
Но в любом случае, хранить точное время следующего выполнения
yopp
По нему можно сделать индекс и очень эффективно искать
Ilya
День добрый
Подскажите пожалуйста, какой аналог ораклового like для монги
И как сделать шрифт запросов которые я пишу в Robo 3T крупнее
yopp
yopp
Потом можно сделать узкий фильтр с окном
Ilya
yopp
Не знаю 🤷🏻♂️
Алмаз
Добрый день! Можно ли на стороне mongo получить список базы данных в отсортированном виде без участия клиента?
//nodejs
let mongoCommand = {listDatabases: 1, nameOnly: true};
_db.admin().command(mongoCommand)
.then((data) => {
// db_list = data.databases;
})
Алмаз
Тоже самое касается для списка коллекций в базе данных, получение списка коллекций в отсортированном виде по названию.
yopp
Anonymous
Здраствуйте. Можно ли хранить в Mongo обычный html? Как в плане безопасности?
yopp
В виде строки — можно. Не понятно, о какой «безопасности» речь
yopp
Ещё надежнее хранить как GridFS документы, чтоб не заморачиваться с ручной нарезкой больших html документов
꧁༒Dmitry༒꧂
Приветствую. Есть коллекция в базе:
[
{
myval: 12345678000
name: 'example1'
},
{
myval: 12345678000
name: 'example2'
},
]
Затем вызываю метод агрегации
.aggregate([{ $group: {_id: { myval: "$myval", items: { $push: "$$ROOT" } } } }])
Ожидаю что данные на выходе будут сгруппированы по целочисленному полю, но по какой-то причине часть данных не входят в выборку. Куда копать?
```
yopp
yopp
{_id: “$myval”, items: {$push:...}}
yopp
꧁༒Dmitry༒꧂
Гена
@dd_bb Добрый день
Подскажите пожалуйста, что ему не нравится
db.collection.aggregate([
{
$project: {
item: 1,
attrs: { $objectToArray: "$attributes" }
}
},
{
$project: {
attrs: '$attrs.k'
}
},
{
$reduce: {
input: '$attrs',
initialValue: [],
in: { $concatArrays: ["$$value", "$$this"] }
}
}
]);
"operationTime" : Timestamp(1580214295, 21),
"ok" : 0,
"errmsg" : "Unrecognized pipeline stage name: '$reduce'",
"code" : 40324,
"codeName" : "Location40324",
"$clusterTime" : {
"clusterTime" : Timestamp(1580214295, 21),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
Гена
Unrecognized pipeline stage name: '$reduce - используется согласно примеру из документации
yopp
$reduce это не stage, это оператор
Гена
версия 4.0.4