Joe
Какие субкатегории? Ссылку в доку хотя бы кинь
Joe
зачем прям тут пиши, вдруг кто-то дельную идею подкинет
Joe
то что ты ищешь это subdocument. не привязывайся к своей предметной области, когда ищешь что-то по какой-то технологии
Joe
https://docs.mongodb.com/manual/tutorial/query-embedded-documents/ https://zellwk.com/blog/mongoose-subdocuments/
Joe
я понял. тут все ребята либо работают, либо дела свои у них. Я лучше здесь отвечу, чтоб кто-то другой мог тоже найти ответ, если столкнется с такой же проблемой
Vadim
И в цепочке промисов делать populate также рабочий вариант
Alexey
Привет, парни, скажите по ObjectId - это сквозная нумерация id-шников по всей коллекции (или может вообще по всей базе) или только в рамках некой ограниченной структуры? Т.е. могут ли id-шники в каком-то случае совпасть? Могу ли я обновить поле глубоко внутри документа только по его _id?
Joe
уникальная в рамках одной коллекции, обновить можете
Ну обджект айди уникален вовсе, как утверждает разрабы монги. С вероятностью если не ошибаюсь 1 на лям
Alexey
уникальная в рамках одной коллекции, обновить можете
Спасибо >обновить можете Подскажите как? db.document,update({_id:ObjectId('..'), otherField: '123'}) Так он мне найдет хоть где, в любом уровне вложенности?
Alexey
+ спасибо
Евгений
кто работал с драйвером дляMongo для .net? Можно ли BsonDocument.ToJson() заставить даты и long слать в нормальном формате, а то такая петрушка получается { "_id" : "5f69f4adc8538aeae99d12cb", "_lastUpdate" : { "$date" : { "$numberLong" : "1600779435067" } }, "_createDate" : { "$date" : { "$numberLong" : "1600779436035" } }, "_sequence" : { "$numberInt" : "2" }, "_version" : { "$numberInt" : "1" } } Что касается поля _lastUpdate и т.д.
Евгений
чтобы он сериализовал в "_lastUpdate":1600779435067
Евгений
без всяких указаний, что мол date и т.д.
Евгений
да, это BsonDocument если че)
Joe
т.е. с вероятностью 1 на лям будут коллизии и внутри коллекции?
Не уверен что шансы точно такие (мб лярд) но да
Alexey
({_id...} , {fieldForUpdate....})
Когда я делаю find по этому _id (который засунут глубоко в документ), то ничего не находит. В таком случае и update не должен сработать
Alexandr
Всем привет, как правильно построить индексы для такого запроса? { $match: {a: true, b: false} }, { $sort: {time: 1} }, { $group: { _id: '$x', items: {$push: '$$ROOT'} } } использовать compound на a и b, и отдельный на time, или compound на все 3 значения? нужен ли тут также индекс на x?
Daniil
и обновлять соответственно также
Alexey
если вложенность, то запросы надо строить вида .find({ ‘fieldA.fieldB._id’: _id })
У меня там массивы в массивах.. Сейчас попробовал так: .find({'matchings[0].items[0].productId':'1338414'})
Alexey
ничего не вышло)
Daniil
У меня там массивы в массивах.. Сейчас попробовал так: .find({'matchings[0].items[0].productId':'1338414'})
с массивами так: https://docs.mongodb.com/manual/reference/operator/query-array/ https://docs.mongodb.com/manual/reference/operator/update-array/
Alexey
ок, смотрю
Тарас
Привет, когда хочу обновить поле в документе, выскакивает еррор. Если делаю $unset, тоже еррор. Как мне обновить это поле в документе, и почему она посчитало его Immutable, если это простой enum
Тарас
Alexey
с массивами так: https://docs.mongodb.com/manual/reference/operator/query-array/ https://docs.mongodb.com/manual/reference/operator/update-array/
Получилось, но он все равно нашел весь документ полностью, я то думал будет ссылка на мой маленький подобъектик. Как обновить то мне его теперь?
Daniil
Монга оперирует документами целиком
Daniil
Вы конечно можете выбрать отдельные поля через projection
Alexey
Не является ли плохим тоном адресация такого формата?
Alexey
db.products.update( { _id: clProduct._id }, { $set: { 'matchings.0.items.0.accepted : true, 'matchings.0.items.0.error : true } } )
Alexey
или нормас?
Alexey
Вот такая макаронина: matchings.0.items.0.accepted
Nick
нормально
Anonymous
Привет. Подскажите визуальный редактор для редактирования схемы mongodb? Благодарю!
Anonymous
Нет - это относительно. Но связи между коллекциями - есть.
Nick
на уровне бд - нет, все в вашем софте
Веселый Роджер
Почему я не могу менять поле none, через компас?
Alexey
Alexey
db.products.update( { _id: clProduct._id }, { $set: { 'matchings.0.items.0.accepted : true, 'matchings.0.items.0.error : true } } )
Я правильно понял, что для добавления элемента меняет $set на $push? (прошу прощения за такие вопросы)
Nick
Я правильно понял, что для добавления элемента меняет $set на $push? (прошу прощения за такие вопросы)
есще если вам нужно будет обновлять отдельные элементы в массиве по какомйто условию, то смотрите $elemMatch
Alexey
есще если вам нужно будет обновлять отдельные элементы в массиве по какомйто условию, то смотрите $elemMatch
но это если мы хотим реализовать без макоронины, тот же вариант, который я привел, все равно же должен работать?
Nick
но это если мы хотим реализовать без макоронины, тот же вариант, который я привел, все равно же должен работать?
он будет работать только на доки в указанных индексах, т.е. в нулевых. Если нужный док располагается в другой позиции, то проапдейтится не то что надо
Anonymous
Подскажите визуальный редактор для схемы и связей mongodb? Благодарю!
yopp
Подскажите визуальный редактор для схемы и связей mongodb? Благодарю!
Скорее всего если и есть, то для конкретных ODM
Alexey
он будет работать только на доки в указанных индексах, т.е. в нулевых. Если нужный док располагается в другой позиции, то проапдейтится не то что надо
Я сделал динамическую строку, там разные номера элементов подставляются, но соглашусь, это не сильно красиво
yopp
а так, любой UML редактор подойдёт
Anonymous
👍
Nick
Подскажите визуальный редактор для схемы и связей mongodb? Благодарю!
у вас задача какая? просто отрисовать диаграмму для документации?
Andrey
Привет. подскажите как такое сделать на монгодб? Есть база в которую добавляется каждую минуту записи. Есть страница на которую заходит человек и по бесконечному скроллу может просматривать историю добавлений Сначала решил разбить на пагинацию, но т.к. записи добавляются постоянно такое не сработало .find({}) .sort({created_at: -1}) .skip(page > 0 ? page * onPage : 0) .limit(onPage) Сейчас идея, чтоб запоминать id документа который был первым в сортировке по дате. и тать началом первым до следующей перезагрузки страницы по логике думаю так есть в монго что-то подобное? или куда копать: .find({}) .sort({created_at: -1}) .start({_id: startId}) .limit(onPage)
Nick
Отрисовать диаграмму
тогда как выше и советовали любой UML редактор
Joe
https://dbmstools.com/categories/database-design-tools/mongodb https://www.google.com/amp/s/holycoders.com/best-mongodb-schema-design-tools/amp/
Андрей
populate работает как select? Я когда популейтю, и делаю select ('firstSection') мне так же помимо firstSection и canIHelpSection приходит ?
Anonymous
Вы сами этим пользовались?
Андрей
populate работает как select? Я когда популейтю, и делаю select ('firstSection') мне так же помимо firstSection и canIHelpSection приходит ?
Можно как то, делая populate, автоматически поля не выбирались, а приоритет выбора был у select?
Dr
Кто-нибудь делал selective replication? Конкретно в моём случае программеры просят данные из одной бд перекладывать в другую бд и/или кластер, причём не все, а по какому-то их алгоритму (не всё поля или не все коллекции)
Dr
Думал в сторону mongo streams, но это приложение надо делать, которое слушает и перекладывает
Dr
Поэтому сейчас думаю в сторону триггеров
Dr
Но это, боюсь, не гарантирует консистентности
Dr
Хороший вопрос. Не уверен.
Тарас
Привет, что может значить, что shard key не найден, но я его даже не добавлял, и шардирование в бд отключено, немогу обновить документ
Тарас
Тарас
3.6.0
Тарас
На локалке все окей, на локалке 4.4.0 версия
Гена
Всем привет Подскажите пожалуйста, как на высоконагруженной бд переименовать индекс? Я знаю что дропаем и пересоздаем. НО! Высоконагруженный кластер. Какой Best Practice ?
Daniil
проще не переименовывать
Daniil
если индекс не критичный, то можно в бекграунде просто его запустить
Гена
Объясню в чем дело. Я на продуктивной системе запустил дроп индекса а потом в бекграунде начал создавать его. В итоге на 20 минут кластер просто задыхался