Slava
Если в монге есть коллекция, у которйо отличаются 3 поля ID, RequestID и время создания записи Created
Collection responses
```
ID primitive.ObjectID xml:"-" bson:"_id,omitempty"
RequestID primitive.ObjectID xml:"-" bson:"request_id,omitempty"
Token string xml:"-" bson:"token"
TXnID string xml:"-" bson:"TXnID"
TxnGPSDate string xml:"-" bson:"Txn_GPS_Date"
MTID string xml:"-" bson:"MTID"
TxnType string xml:"-" bson:"Txn_Type"
Created time.Time xml:"-" bson:"created"
CreatedDate string xml:"-" bson:"created_date"
CreatedString string xml:"-" bson:"created_string"
```
вопрос: можно ли написта ьзапрос который выгрузи тзапись последнюю которая была записана, при условии чт оу меня нет аргумента на руках последнее время, тогд абыло бы просто FindOne
Slava
Мне надо выгрузить респонс по 4 полям
"request_id": req.ID,
"TXnID": req.TXnID,
"token": req.Token,
"Txn_GPS_Date": req.TxnGPSDate,
плюс по полю Created он дложен быть самым свежим.
Slava
Slava
SuleYman
как найти документ в коллекции у которого нет поля user_id? такой запрос возможен?
Slava
Slava
FindOne найдёт одно знаечние
Find все коу которых поле имеет значение которое укажите
Slava
и не может быть что у коллекции нет бполя ID
Это противоречит самой монге
SuleYman
Slava
Slava
И запрос
Slava
ибо вопрс очен абстрактный у тебя
Sergey Bedritsky
скажите а можно ли с помощью аггрегации получить из таких документов
{
createdAt: "2020-09-01T15:48:52.390+00:00",
command: "start" // also could be "dev", "build", "generate"
}
такое
{
day: "2021-20-01",
commands: {
dev: 24512,
build: 4551,
start: 4444,
generate: 5555
}
}
Sergey Bedritsky
т/е/ чтоб сгруппировал по дням и посчитал кол-во документов с каждой command
Nick
Sergey Bedritsky
Nick
dev: {$sum: {$cond: {$eq: ["$command", "dev"]}, 1, 0 }}
Nick
вроде так работало
Sergey Bedritsky
ух. пошел читать благодарю
Nick
писал по памяти, скобки точно надо проверить
Sergey Bedritsky
ругается что commands не объект аккумулятор
{
_id: '$date',
commands: {
dev: {
$sum: {
$cond: {
if: {$eq: ["$command", "dev"]},
then: 1
}
}
}
}
}
Sergey Bedritsky
оно должно быть плоско обязательно я так понимаю?
Sergey Bedritsky
так работает
{
_id: '$date',
dev: {
$sum: {
$cond: {
if: {$eq: ["$command", "dev"]},
then: 1,
else: 0
}
}
}
}
благодарю 👍
Pan
как я могу заменить _id на id в mongoose?
Pan
Artyom
Ребят, всем привет, ошибка при дампе
Artyom
Mux ending but selectCases still open 4
Artyom
версии 4.4.2
Artyom
Может кто знает в чем проблема?
Андрей
Кто знает насколько сильно просаживает производительность auditAuthorizationSuccess: true?
Nikolai
Mux ending but selectCases still open 4
So as I exposed the other day I have found the solution. Because I was using a kubernetes service to access my replicaset, mongodump requests were being redirected to all the members of the replicaset and not only the master one.
All I did was point mongodump directly to the master and since then all the backups have been working fine.
Hope it helps you
AI
Народ, привет. Помогите решить сложную задачу
Есть коллекция сущностей
У каждой сущности есть рейтинг, от 1го до 10ти
Есть коллекция пользователей
Каждый пользователь может оценить сущность
Для связки есть третья коллекция с тремя полями в документе (ид пользователя, ид сущности, оценка)
Нужна выборка, предполагаю что с агрегацией
Выбрать все сущности, заджойнить таблицу связи, подсчитать среднее значения рейтинга по каждой сущности, общее количество проголосовавших, и свою оценку, если таковая уже есть..
Третий день не могу ничего путного сделать, уже глаза замылились
Nick
Народ, привет. Помогите решить сложную задачу
Есть коллекция сущностей
У каждой сущности есть рейтинг, от 1го до 10ти
Есть коллекция пользователей
Каждый пользователь может оценить сущность
Для связки есть третья коллекция с тремя полями в документе (ид пользователя, ид сущности, оценка)
Нужна выборка, предполагаю что с агрегацией
Выбрать все сущности, заджойнить таблицу связи, подсчитать среднее значения рейтинга по каждой сущности, общее количество проголосовавших, и свою оценку, если таковая уже есть..
Третий день не могу ничего путного сделать, уже глаза замылились
так и в чем проблема? чтото считается не так?
AI
$lookup: {
from: 'gameratings',
pipeline: [
{
$group: { _id: null, totalRated: { $sum: 1 } }
}
],
as: 'totalRated'
}Ну вот первое что я не могу понять как сделать, когда группирую общее количество проголосовавших, totalRated получа вложенным... Как его подсчитать в одно поле в корне документа?
Nick
потом сделать $project и вытащить на уровень выше
AI
Хм, попробую...
AI
А если в конвеере я хочу использовать условие выборки, где фигурирует поле из родительской и заджойненой коллекции?
{
$match: { 'коллекция2.gameId': 'коллекция1._id' }
}
D
ребят, всем привет, а как-то можно сделать выборку с null и с lte / gte? к примеру:
year: { $or: [null, { $gte: 1981 }]
Denis
Народ, привет. Помогите решить сложную задачу
Есть коллекция сущностей
У каждой сущности есть рейтинг, от 1го до 10ти
Есть коллекция пользователей
Каждый пользователь может оценить сущность
Для связки есть третья коллекция с тремя полями в документе (ид пользователя, ид сущности, оценка)
Нужна выборка, предполагаю что с агрегацией
Выбрать все сущности, заджойнить таблицу связи, подсчитать среднее значения рейтинга по каждой сущности, общее количество проголосовавших, и свою оценку, если таковая уже есть..
Третий день не могу ничего путного сделать, уже глаза замылились
Можно и нужно обойтись без аггрегации. Просто явно «чтений» оценок будет больше чем «записей». Поэтому на каждой сущности отдельным полем висит его средний рейтинг, и кол-во проголосовавших. Пересчитывается средний рейтинг сущности при добавлении/удалении оценки
Таким образом чтобы нарисовать список, отсортировать по рейтингу и тд, агрегации не нужны будут
WolderVsrat
Denis
Denis
Чендж стрим полезен для сложных кейсов где тебе нужна подписка на query. Для такого его юзать оверхед
WolderVsrat
Значит все вполне нормально, и я не наркоман)
Denis
Например в кейсе выше можно пересчеты рейтинга сделать атомарными через aggregation update, или в тупую через чтение+запись в транзакции
WolderVsrat
Ага, нашел в доке, спасибо!
Как-то не догадывался, что у агрегейшна можно с апдейтом делать
WolderVsrat
А то я все мёрж да аут юзал для матер. таблиц в пайплайне, а оказывается все проще)
Denis
Denis
Speedy
Да шо это свисает такое
Speedy
Denis
MDWIT
Ребят, случайно установил 3.6.3 версию монги. Если ее удалить и поставить 4.4. Я данные потеряю?
LUVERISE
Парни подскажите что это такое
LUVERISE
Aleksey
Файловая система строго рекомендуется xfs, авторизация не включена.
LUVERISE
Щас покажу
LUVERISE
LUVERISE
Что здесь не так?
LUVERISE
Anonymous
есть 2 схемы и модель, в модели стора есть массив продуктов, и проблема в том что это тупо обычный массив, как можно составить схему чтобы я работал не с обычными методами массивов, а именно которые с БД, тоесть всякие там выборки из массива продукта, удаление и поиск, и т.п, а то пока использую splice для удаления что мне не очень нравится
Artem
как корректно писать запросы
чтоб в случае отсутствия результатов поиска
упрощались/менялись фильтры?
это реализуемо со стороны монги/монгуса или надо самому реализовывать повторно кидая запросы?
Denis
Artem
AI
Имею коллекцию к примеру
name: String,
ex: Number,
rating: Number,Мне нужно сделать выборку, сортируя её результату умножения ex на rating. не могу понять как
AI
То есть агрегацией вытащить поле результирующее и по нему сортировать? Больше никак ?
AI
Тоже думаю про это. Спасибо
Cavidan
Как взять документ из другой коллекции по id?Допустим есть у меня коллекции user и cart.Надо в user создать документ и указать cart из другой коллекции.Как это возможно сделать?
Cavidan
Oleg
подскажите почему такой простой запрос так долго выполнялся:
2021-02-08T10:27:24.254+0200 I WRITE [conn23] update Auth.Token command: { q: { username: "login@hostname", status: "ACTIVE", _id: { $ne: "a9468d94-649b-46f6-a8c5-af3978440c0c" }, clientId: "sometext" }, u: { $set: { status: "CLOSED", expiredAt: new Date(1612772843124) } }, multi: true, upsert: false } planSummary: IXSCAN { _id: 1 } keysExamined:131626 docsExamined:131625 nMatched:1 nModified:1 numYields:1030 locks:{ Global: { acquireCount: { r: 1031, w: 1031 } }, Database: { acquireCount: { w: 1031 } }, Collection: { acquireCount: { w: 1031 } } } 1129ms
2021-02-08T10:27:24.254+0200 I COMMAND [conn23] command Auth.$cmd command: update { update: "Token", ordered: true, $db: "Auth", $clusterTime: { clusterTime: Timestamp(1612772843, 1), signature: { hash: BinData(0, 696358B5972D5117E9D6FEAD9CF1FFE3B8664101), keyId: 6905827268984045569 } }, lsid: { id: UUID("aea3d9f3-2615-4de5-ab48-dc27ac676bd5") } } numYields:0 reslen:245 locks:{ Global: { acquireCount: { r: 1031, w: 1031 } }, Database: { acquireCount: { w: 1031 } }, Collection: { acquireCount: { w: 1031 } } } protocol:op_msg 1129ms
yopp
подскажите почему такой простой запрос так долго выполнялся:
2021-02-08T10:27:24.254+0200 I WRITE [conn23] update Auth.Token command: { q: { username: "login@hostname", status: "ACTIVE", _id: { $ne: "a9468d94-649b-46f6-a8c5-af3978440c0c" }, clientId: "sometext" }, u: { $set: { status: "CLOSED", expiredAt: new Date(1612772843124) } }, multi: true, upsert: false } planSummary: IXSCAN { _id: 1 } keysExamined:131626 docsExamined:131625 nMatched:1 nModified:1 numYields:1030 locks:{ Global: { acquireCount: { r: 1031, w: 1031 } }, Database: { acquireCount: { w: 1031 } }, Collection: { acquireCount: { w: 1031 } } } 1129ms
2021-02-08T10:27:24.254+0200 I COMMAND [conn23] command Auth.$cmd command: update { update: "Token", ordered: true, $db: "Auth", $clusterTime: { clusterTime: Timestamp(1612772843, 1), signature: { hash: BinData(0, 696358B5972D5117E9D6FEAD9CF1FFE3B8664101), keyId: 6905827268984045569 } }, lsid: { id: UUID("aea3d9f3-2615-4de5-ab48-dc27ac676bd5") } } numYields:0 reslen:245 locks:{ Global: { acquireCount: { r: 1031, w: 1031 } }, Database: { acquireCount: { w: 1031 } }, Collection: { acquireCount: { w: 1031 } } } protocol:op_msg 1129ms
$ne требует сканирования всей коллекции
Arystan
Всем привет. ребят как вы делаете бэкап?