M
Или более уточню описал схему
M
Морозов
Marjushka
привет. вы сталкивались такой ошибкой от mongoDB? пропадает, если включить впн или установить компасс.
Marjushka
это может быть по причине блока mongoDB рф?
Viktar
Storm
не могу понять
для чего вот это?
Schema.Types.ObjectId
Storm
Storm
Ant
Да, его создает сама бази и он уникальный, по нему можно точно находить нужный объект, если их несколько похожих в базе по другим полям
Storm
Ant
Теоретически можно, но если в коде поиск завязан на идентификаторе, то код не будет работать
Storm
Storm
значит оставляю
Ant
В качестве примера у меня поиск идет по уникальному логину, потом я беруидентификаторы пользователей и складываю в отдельный массив, типа user:: ObjectId
Ant
и когда нужно обновить информацию по юзеру я ищу его в базе по ID из массива
Потом обновляю его и сохраняю обратно в базу
Storm
Ant
да
Ant
это не замена, это и есть ObjectId
Storm
Storm
по github, если кто-то склонировал мой репозиторий или мою ветку, у меня есть возможность это отследить?
Storm
тут я определяю схему, что должен я получить на 15-й строке?
т. е. что вернет type: Schema.Types.ObjectId?
Maxmudjon
Можно ли без агрегация найти ближайший последний документ
например из
[
{
"_id": "Objectid('62400267872eed2fe8547b83')",
"name": "Ali",
"socre": 42,
"created_at": "2022-03-27T11:21:27.304+00:00"
},
{
"_id": "Objectid('62400267872eed2fe8547b83')",
"name": "Ali",
"socre": 37,
"created_at": "2022-03-27T11:07:56.511+00:00"
},
{
"_id": "Objectid('62400267872eed2fe8547b83')",
"name": "Ali",
"socre": 11,
"created_at": "2022-03-27T10:48:11.143+00:00"
},
{
"_id": "Objectid('62400267872eed2fe8547b83')",
"name": "Baxrom",
"socre": 16,
"created_at": "2022-03-27T11:22:14.321+00:00"
},
{
"_id": "Objectid('62400267872eed2fe8547b83')",
"name": "Baxrom",
"socre": 51,
"created_at": "2022-03-27T11:02:41.382+00:00"
}
]
получит
[
{
"_id": "Objectid('62400267872eed2fe8547b83')",
"name": "Ali",
"socre": 42,
"created_at": "2022-03-27T11:21:27.304+00:00"
},
{
"_id": "Objectid('62400267872eed2fe8547b83')",
"name": "Baxrom",
"socre": 16,
"created_at": "2022-03-27T11:22:14.321+00:00"
}
]
Морозов
Можно ли без агрегация найти ближайший последний документ
например из
[
{
"_id": "Objectid('62400267872eed2fe8547b83')",
"name": "Ali",
"socre": 42,
"created_at": "2022-03-27T11:21:27.304+00:00"
},
{
"_id": "Objectid('62400267872eed2fe8547b83')",
"name": "Ali",
"socre": 37,
"created_at": "2022-03-27T11:07:56.511+00:00"
},
{
"_id": "Objectid('62400267872eed2fe8547b83')",
"name": "Ali",
"socre": 11,
"created_at": "2022-03-27T10:48:11.143+00:00"
},
{
"_id": "Objectid('62400267872eed2fe8547b83')",
"name": "Baxrom",
"socre": 16,
"created_at": "2022-03-27T11:22:14.321+00:00"
},
{
"_id": "Objectid('62400267872eed2fe8547b83')",
"name": "Baxrom",
"socre": 51,
"created_at": "2022-03-27T11:02:41.382+00:00"
}
]
получит
[
{
"_id": "Objectid('62400267872eed2fe8547b83')",
"name": "Ali",
"socre": 42,
"created_at": "2022-03-27T11:21:27.304+00:00"
},
{
"_id": "Objectid('62400267872eed2fe8547b83')",
"name": "Baxrom",
"socre": 16,
"created_at": "2022-03-27T11:22:14.321+00:00"
}
]
Sort("_id:-1")
/Krd
dnacd 🦜
/Krd
dnacd 🦜
/Krd
Александр
Добрый день, подскажите пожалуйста, как сделать триггер, чтобы если документ имеет два пробела, сделать один для схемы?
Nick
Nick
Nick
и там радом про валидации https://mongoosejs.com/docs/validation.html может чтото конкретно для вашего случая будет
Александр
Спасибо
камил
как найти ср. арифметическое поля mark в списке by?
by: [{id: 1, mark: “10”}, {id:2 , mark: “5”}]
камил
мне сказали что это можно сделать средствами mongodb
Nick
камил
камил
еще вопрос, поле mark это str, я могу как-то во время агрегации превратить его в int, чтобы $avg сработал?
Александр
Получается 3 ситуации.
-старые документы с двойными пробелами
- старые записи в AD компании, которые айтишники заполняют (для этого cron)
- новые с правильными именами
камил
Nick
Теоретический вопрос. Если в базе, уже много таких документов, где лишние пробелы. Не легче сделать CRON на каждый час и пусть проверяет поле у документов и на схему в монге повесить мидлвар?
Может и легче, но должно быть так - чинить софт, чтобы он в базу сохранял только корректные данные, но при этом мог работать с кривыми, полученными из базы. Выкатываете. Пишете скрипт/запрос, который чинит все данные, запускаете. Убеждаетесь, что в базе проблем нет, после чего выкидываете код поддержки кривых данных на уровне базы. Выкатываете
Nick
камил
камил
Nick
хм, получил []
да, потому что просто так конвертация над массивом не работает. Для этого уже надо налопатить стейджей. Лучше приведите даные к нормальному числовому виду
камил
Nick
камил
черт, просто 5к документов в коллекции, мне придется в каждом документе вручную менять?
Nick
для монги это будет апдейт с агрегацией, где стейджы $unwind потом $project с конвертацией и потом $group для того чтобы обратно собрать в массив. Главное оттестить все хорошо, а то легко налажать
Nick
или просто напишите скрипт на питоне в вашем случае, который все данные вычитывает из базы, меняет и сохраняет обратно в нормальном виде
камил
камил
на int
камил
но все равно получаю []
камил
камил
Nick
оно ж вложенное, тогда надо бы добаваить еще название массива "$by.mark"
камил
хм
Nick
и поставьте $project после фильтрации
Nick
если до то надо поменять $project на $addField
камил
камил
Nick
Pasha
Добрый день. Мне сказали что на старых версиях монго не сохраняла порядок елементов в массиве. Сейчас также или пофиксили это?
yopp
yopp
https://bsonspec.org/spec.html
Array - The document for an array is a normal BSON document with integer values for the keys, starting with 0 and continuing sequentially. For example, the array ['red', 'blue'] would be encoded as the document {'0': 'red', '1': 'blue'}. The keys must be in ascending numerical order.
Pasha
Александр
Александр