yopp
Всем привет!
Подскажите пожалуйста
как удалить элемент image с id = 1 из такой структуры
{
name: 'companyName',
options: [
{
color: 'red',
images: [
{ imageId: '1', image: 'image1' },
{ imageId: '2', image: 'image2' },
],
},
],
}
Пробовал вот так
db.companies.updateOne({'options.images.imageId': 1}, {$pull: {'options.images.$': 1}})
Появляется ошибка
Cannot use the part (images) of (options.images.0) to traverse the element
В $pull вам необходимо указать условие для удаление документа. В вашем случае это «options.images.imageId: 1»
yopp
https://www.mongodb.com/docs/manual/reference/operator/update/pull/#remove-all-items-that-match-a-specified--pull-condition
yopp
[
{
database: {
_id: 'config',
...
...
...
{
database: {
_id: 'crawler',
primary: 'rs0',
partitioned: true,
version: {
uuid: UUID("7c82efd0-3744-4480-9e0b-4b891ab2a01e"),
timestamp: Timestamp({ t: 1691434708, i: 4 }),
lastMod: 1
}
},
collections: {
'crawler.pages33': {
shardKey: {
url: 1,
hash: 1
},
unique: false,
balancing: true,
chunkMetadata: [
{
shard: 'rs0',
nChunks: 7136
}
],
chunks: [
'too many chunks to print, use verbose if you want to force print'
],
tags: []
}
}
}
]
А у вас добавлены остальные шарады в конфигурацию? https://www.mongodb.com/docs/manual/reference/method/sh.addShard/
yopp
yopp
Андрей
Андрей
Андрей
В $pull не нужно использовать $. Просто еще раз повторите условие из update
Нашел вот такую историю
https://github.com/Automattic/mongoose/issues/7147
Попробовал вот так
{ $pull: { options: { images: { imageId: 1 } } } }
Ошибка исчезла, но сам объект не удалился из массива, хотя ответ апдейта
{
acknowledged: true,
modifiedCount: 1,
upsertedId: null,
upsertedCount: 0,
matchedCount: 1
}
yopp
Андрей
yopp
Нашел вот такую историю
https://github.com/Automattic/mongoose/issues/7147
Попробовал вот так
{ $pull: { options: { images: { imageId: 1 } } } }
Ошибка исчезла, но сам объект не удалился из массива, хотя ответ апдейта
{
acknowledged: true,
modifiedCount: 1,
upsertedId: null,
upsertedCount: 0,
matchedCount: 1
}
Не заметил что у вас options тоже массив
db.getCollection("images").updateOne(
{ name: "companyA" },
{ $pull: { "options.$[].images": { imageId: 1 } } }
)
db.getCollection("images").find({ name: "companyA" });
→
{
"_id": {
"$oid": "64e5fe27f13f9f421a05beaa"
},
"name": "companyA",
"options": [
{
"color": "red",
"images": [
{
"imageId": 2,
"image": "image2"
}
]
}
]
},
Андрей
Mr.
Добрый день
Не могли бы мне подсказать, почему я не могу добавить строки в базу данных Монго методом spread ?
Mr.
-
Can
Схему покажи
const fullUserData = new Schema({
login: String,
name: String,
family: String,
middleName: String,
role: String,
phone: String,
email: String,
password: String,
});
-
Потому, что ...regs это массив значений, от куда ему знать, куда именно подставить это значение
-
Вслучае, если вы прокидываете там объект(-ы), то надо сделать assign, чтобы это всё развернуть в один объект
Михаил
milad
Sergey
Коллеги, всем привет!
Подскажите, а тут есть кто-нибудь, кто крутит монгу свыше 5.x версии в кубере?)
Меня интересует потребление ресурсов с переходом на mongosh в exec проверках.
Yevhenii
Sergey
Битнамовским чартиком )
и сразу воткнулся вот в эту фигню
https://github.com/bitnami/charts/issues/10316
Sergey
Sergey
Зеленые стрелочки - это сколько MongoDB 4.4 потребляла в холостую
Красные стрелочки - это сколько MongoDB 6.0 потребляет в холостую ))))
Yevhenii
Sergey
Дык ) прикол в том, что дело не в перконе)
А в том, что Mongo перешла с mongo на mongosh
Sergey
Yevhenii
А у вас перкона оператор ?
Да, там бекапы вроде как 'правильные' реализованы.
Но уже тикет на форуме с ошибками бекапов открыл)
Sergey
А можете показать как у созданного кластера монги от перконы оператора выглядят пробы ?
Yevhenii
Sergey
Я хочу посмотреть как они ливнесс и реадинесс проверки реализовали 🙂
У битнамовского чарта там exec проверки через mongosh, вот они как раз и ушатывают по ресурсам.
Андрей
Кто-нибудь ресторил в линухах небольшие базы, но на несколько тысяч коллекций?
Андрей
Подвернулась базёнка весом в 5G, в которую напхали 3.5к+ коллекций. Это барахло в линухе ресторится только на сервере с 40G рамы и на любые параметры ему плевать. На серверах похилее рестор фэйлится, СУБД отстреливается. Воспроизводится абсолютно на всех версиях.
error running create command: connection(localhost:27017[-5]) socket was unexpectedly closed: EOF
В винде ресторится успешно, но тоже выжирает прилично рамы - 10G почти.
Это фэйспалм какой-то 🤦.
Oleg
Андрей
В смысле немного? 🤨 Эта база работает в реплике на серверах с 4G памяти.
Ilshat
Oleg
да, не увидел 5г цифру изначально, извините, а индексы сколько весят?
Nick
Андрей
Oleg
Ilshat
Андрей
Да это хозяйство надо приводить к вменяемому виду. Убивать всё, что не требуется, чего там много я уверен, а всё остальное мёрджить в одну коллекцию и пусть переписывают код на людской. Там по сути с виду всё одинаковое, разбитое по периодам. 50 лямов доков на 3.5к коллекций. Скриптовать что-то ради одного такого гуманоида я не буду, но сам факт такого поведения при ресторе меня удивил и заставил поприседать с разными версиями, параметрами, настройками окружения и ОСями.
Thunder
Ilshat
Андрей
Зачем? Чтобы слить кучу кусков в один, ничего никуда не надо выгружать, всё делается внутри СУБД.
Андрей
Просто тому, кто хочет потом в случае моего отсутствия саппортить такой дебилизм с тоннами мусора по кускам, остаётся только посочувствовать.
Ilshat
Ilshat
Lukaš 🇨🇿
Ребят, я поднял себе монгу шестую и сказал ей что она replica set состоящий сам из себя. Сделано это для сервера на котором разрабатывается/тестируется софт. Почему-то я не могу к ней подключиться без параметра directConnection. Это вариант нормы?
Yevhenii
Собственно, развернул кластер з 3 шардами, настроил шардирование для коллекции и запустил импорт 100гб в коллекцию.
в sh.status() вижу следующее:
{
'Currently enabled': 'yes',
'Currently running': 'no',
'Failed balancer rounds in last 5 attempts': 0,
'Migration Results for the last 24 hours': {
'14': "Failed with error 'aborted', from rs1 to rs2",
'25': "Failed with error 'aborted', from rs0 to rs2",
'31': "Failed with error 'aborted', from rs2 to rs1",
'32': "Failed with error 'aborted', from rs1 to rs0",
'151': 'Success',
'223': "Failed with error 'aborted', from rs2 to rs0"
}
}
как полечить или больше информации увидеть?)
Nick
Собственно, развернул кластер з 3 шардами, настроил шардирование для коллекции и запустил импорт 100гб в коллекцию.
в sh.status() вижу следующее:
{
'Currently enabled': 'yes',
'Currently running': 'no',
'Failed balancer rounds in last 5 attempts': 0,
'Migration Results for the last 24 hours': {
'14': "Failed with error 'aborted', from rs1 to rs2",
'25': "Failed with error 'aborted', from rs0 to rs2",
'31': "Failed with error 'aborted', from rs2 to rs1",
'32': "Failed with error 'aborted', from rs1 to rs0",
'151': 'Success',
'223': "Failed with error 'aborted', from rs2 to rs0"
}
}
как полечить или больше информации увидеть?)
Больше инфы вроде в логах было
Егор
Собственно, развернул кластер з 3 шардами, настроил шардирование для коллекции и запустил импорт 100гб в коллекцию.
в sh.status() вижу следующее:
{
'Currently enabled': 'yes',
'Currently running': 'no',
'Failed balancer rounds in last 5 attempts': 0,
'Migration Results for the last 24 hours': {
'14': "Failed with error 'aborted', from rs1 to rs2",
'25': "Failed with error 'aborted', from rs0 to rs2",
'31': "Failed with error 'aborted', from rs2 to rs1",
'32': "Failed with error 'aborted', from rs1 to rs0",
'151': 'Success',
'223': "Failed with error 'aborted', from rs2 to rs0"
}
}
как полечить или больше информации увидеть?)
видимо у тебя что-то с rs2
Sandarion
Привет всем)
В проекте использую replica set и все методы API обернуты в транзакции. При повышении нагрузки в проекте (примерно до 1000 операций в секунду), транзакции начинают конфликтовать друг с другом и отдельные транзакции валятся. При этом получаю ошибку:
Plan executor error during findAndModify :: caused by :: WriteConflict error: this operation conflicted with another operation. Please retry your operation or multi-document transaction.
Подскажите пожалуйста, в каком направлении копать?
Sandarion
Смотрел в сторону переезда на PostgreSQL и использования deadlocks для избежания подобных ошибок
Но времени на полноценный переезд нет, нужно какое-то более быстрое решение, которое позволит остаться на MongoDB
Tetra
yopp
yopp
Sandarion
Sandarion
Или имеется в виду обработчик ошибок?
Air
domain.com/v1/items?page=1&start=2023-08-25
Есть endpoint который выдает все товары. Как правильно выдавать только товары от указанной даты до момента запроса?
Такой формат времени ок или это не канон?
Air
а, это я писал для другого чата, но там дальше mongodb 😁
как в бд нормально записать timestamp и по нему же найти записи?
я пытался new Timestamp() и там чет не то
Air
в итоге в бд записал new Date() и приходится искать так, как сделал выше
Air
давным давно делал так, но это же не ок, да?
Anonymous
Приветствую. Пытаюсь запустить сервер монги, но ничего не выходит. Гуглил где-то полчаса — ничего не помогло
Anonymous
Anonymous
На винде всё нормально работало, на линуксе вот
Отдельно Очумелые
Anonymous
Akmal
Oyatillo
Usefindandnodify ni false qb qoygansiz
Akmal
Akmal
raxmat
Andrey
Всем привет,можете подсказать как такой фиксить,15 мин назад все работало...
Andrey
Мб иза того что я использую VPN
Admin
как все поля схемы сделать обязательными сразу ?