Мечтатель
Max
Привет! как в монге работать с датами? вот насколько я понял - она хранит их в потрохах в ютс, но возвращает - в изо..
Nick
так одно и то же
Max
так одно и то же
нет - в изо нету часового пояса
Nick
а его и в ютц нет
Nick
и да монга не хранит часовые пояса, если оно вам нужно заморачивайтесь отдельно какнить) это позиция монго
Мечтатель
ну можно самостоятельно отдельно таймзону хранить
Мечтатель
как вариант
Aga
welcome pizza hunter
Артём
А какое дефолтное значение можно записать в mongoose.Schema.Types.ObjectId? Пробую null - ругается
Nick
а зачем в него записывать?
Артём
Не стоит?
Артём
Получается поле пустое будет)
Артём
А так хоть понятно что оно есть и null
Nick
не, создаете ObjectId и указываете его
Nick
если это поле _id, то его явно указывать не нужно. если другое поле, то нужно брать OID другой записи
Nick
а не просто создавать бездумно их
Anonymous
подскажите, есть схема в монгусе со следующем полем: { person : [{ name : String, link : String }] } , в неё залил данные, нормально залилось, но на каждый такой вложенный документ создалось отдельное _id . Во-первых не совсем понятно, почему, а во-вторых как это убрать?
Nick
Потому что вы нп знаете как работает монга
Nick
В монге все доки, то что вам монгус дает абстракции - это лишь сахар
Vova
"всё" - это что? значения полей?
попробуй поработать с монгой через официальный консольный клиент а не через драйвер, многое поймешь)
Nick
Имел ввиду сущности, поля они и в африке поля, они тоже могут быть доками/объектами. Собственно как выше написали поиграйтесь ручками с бд, чтобы иметь представление о внутрянке
Constantin
подскажите, есть схема в монгусе со следующем полем: { person : [{ name : String, link : String }] } , в неё залил данные, нормально залилось, но на каждый такой вложенный документ создалось отдельное _id . Во-первых не совсем понятно, почему, а во-вторых как это убрать?
Сделайте внутри массива Mixed и попробуйте Убрать вроде можно просто опциями схемы. Монгус добавляет _id в объекты массивов, чтобы вам удобнее было делать $pull и т. п. операции
Nick
Поле _id убрать нельзя, оно всегда есть на уровне бд, то что вы его не будете отображать оно от этого не удалитсч
Nick
Сделайте внутри массива Mixed и попробуйте Убрать вроде можно просто опциями схемы. Монгус добавляет _id в объекты массивов, чтобы вам удобнее было делать $pull и т. п. операции
Не "удобнее", а это является механизмом указания связи объектов. Ничего нп мешает вместо массива указать поле, ссылающееся на другоую сущность и монгус проставит ее ид, а при выборках будет заполнять
Nick
Я и говорю, что это механизм связывания доков, а не "для удобства", нужно разделять сахар и то без чего работать не будет
Anonymous
Я и говорю, что это механизм связывания доков, а не "для удобства", нужно разделять сахар и то без чего работать не будет
каких доков? я же сказал - вложенные обьекты. Монгошелл нормально их создал. { "_id" : ObjectId("5bd80c383650d9b0f19b39a9"), "name" : "Test1", "result" : [ { "name" : 1 }, { "name" : 2 } ] } Монгус в каждый вложенный обьект напихал айди.
Nick
каких доков? я же сказал - вложенные обьекты. Монгошелл нормально их создал. { "_id" : ObjectId("5bd80c383650d9b0f19b39a9"), "name" : "Test1", "result" : [ { "name" : 1 }, { "name" : 2 } ] } Монгус в каждый вложенный обьект напихал айди.
монгус - это ODM и он для каждогой схемы создает коллекцию, это раз. далее каждый объект получает уникальный _id в пределах своей коллекции. потом монгус производит связывание - указывает _id дока, вместо того чтобы запихать его вложенно. и собственно сохраняет два объекта раздельно и они существуют своей жизнью.
Nick
если вам нужно сохранить именно вложенный объект, то не используйте объекты, описываемые схемой
Nick
Будет работать, у меня дофига массивов с объектами без _id
рад за вас, но вижу что с фундаментом у вас не очень
Nick
Он не сохраняет их отдельно, просто в pre save добавляет вложенным объектам со схемой mongoose.Types.ObjectId()
когда вы в последний раз делали ручное связывание объектов в монге и делали ли?
Anonymous
монгус - это ODM и он для каждогой схемы создает коллекцию, это раз. далее каждый объект получает уникальный _id в пределах своей коллекции. потом монгус производит связывание - указывает _id дока, вместо того чтобы запихать его вложенно. и собственно сохраняет два объекта раздельно и они существуют своей жизнью.
я не запихивал документы вложенно. я просто создал поле, значение которого - массив простых обьектов. Он их отдельно никуда не сохранил, просто добавил лишнее поле, которое теперь ходит лишней нагрузкой. Ничего ни с чем не связано, просто уникальные обьекты в массивчике. всё.
Anonymous
объекта описаны схемой монгуса?
описаны внутри одной и той же схемы. выше присылал, как выглядит поле. :person : [{ name : String, link : String }]
Nick
как выглядит поле - это как фарш - его уже не провернуть назад, чтобы понять как вы описываете схему
Constantin
когда вы в последний раз делали ручное связывание объектов в монге и делали ли?
Интересно, на основое чего вы сделали выводы что у меня нет фундамента, вы меня собеседовали? Если мне не нужны _id во вложенных объектах, и я не хочу тратить на это процессорное время, а монгус тупо перебирает объеты по схеме в пресейве, я убираю эту логику
Constantin
причем тут связывание объектов, человек просто хочет, чтобы у него была проверка полей в массиве
Constantin
оно в схеме так написано, я его оттуда взял.
https://stackoverflow.com/questions/17254008/stop-mongoose-from-creating-id-property-for-sub-document-array-items
Constantin
Если схема все таки нужна, можете так убрать
Nick
оно в схеме так написано, я его оттуда взял.
блин, сгянул в пример, а не в самое первое сообщение
Constantin
блин, сгянул в пример, а не в самое первое сообщение
После этого вы указываете другим на фундамент?
Nick
После этого вы указываете другим на фундамент?
конечно, в пределах того что я говорил об определении схемы через вложенные объекты, определенные через монгуса я был прав. лучше бы явно указали, что я про другое говорю
Anonymous
https://stackoverflow.com/questions/17254008/stop-mongoose-from-creating-id-property-for-sub-document-array-items
спасибо 👍🏿, воспользуюсь этим вариантом: { _id: ObjectId subdocArray: [ { _id: false, field: "String" } ] }
Nick
После этого вы указываете другим на фундамент?
Да, есть касяк, полез разбираться и понял что почемуто держу в голове только схему с рефами, а поддокументы напрочить выкинул. Походу сказывается постоянная работа с реляционками и хибером
Павел
Коллеги, подскажите пожалуйста оптимальное решение: есть шардированный кластер из нескольких репликасетов, в кластере есть и шардированные и нешардированные коллекции, в него был добавлен новый пустой репликасет, есть задача перенести одну нешардированную коллекцию в новый репликасет (в БД из которой забирается коллекция есть другие коллекции и они должны остаться на старом месте).
Max
Привет! Насколько глупо делать следующее: UsersSchema.index({ 'driver.status': 1, }); UsersSchema.index({ roles: 1, }); UsersSchema.index({ phoneNumber: 1, }); UsersSchema.index({ roles: 1, searchId: 1, phoneNumber: 1, createdAt: -1, }); то есть у меня одни и те же поля лежат в компоунд индексе и в обычных
Анатолий
место под индексы жалко?
Constantin
Привет! Насколько глупо делать следующее: UsersSchema.index({ 'driver.status': 1, }); UsersSchema.index({ roles: 1, }); UsersSchema.index({ phoneNumber: 1, }); UsersSchema.index({ roles: 1, searchId: 1, phoneNumber: 1, createdAt: -1, }); то есть у меня одни и те же поля лежат в компоунд индексе и в обычных
Привет! Все зависит от вашей задачи, если вы будете на чтение использовать все 4 индекса, то не глупо. Но учтите, что чем больше индексов, тем сложнее вставка/обноление/удаление
Анатолий
если не жалко - то не глупо. обязательное требование - ты будешь эти индексы юзать
Max
а насколько влияет 1/-1 на идекс?
Max
если я допустим буду деалать асендинг сортировку, а индекс = -1 - что будет?
Max
индекс заюзается?
Max
место под индексы жалко?
не, там меньше 5 метров... в старой бд-шке на индексы
Max
такой ещё вопрос - если в коллекции уже есть документы без индекса, а потом я добавляю индекс - старые документы будут переиндексироватся?
Constantin
-1 и 1 не влияет на заюзается/не заюзается
Constantin
-1 и 1 влияет на порядок сортировки записей в индексе и их подбирать нужно от запросов, и что за данные у вас там хранятся
Max
спасибо) и последний вопрос: я вообще сделал агрегации, и на основании их - сделал бд-вьюшки. Они подхватывают индексы коллекций?
Nick
а насколько влияет 1/-1 на идекс?
влияет только в запроса со сложной сортировкой по нескольким полям - индекс будет использоваться только если все направления и совпадают. например, индекс по трем полям { "p1" : 1, "p2" : 1, "p3" : 1 } то он будет использовать для запросов с сортировками { "p1" : 1, "p2" : 1, "p3" : 1 } { "p1" : 1, "p2" : 1 } { "p1" : 1 } но не будет использован для { "p1" : 1, "p2" : 1, "p3" : -1 } { "p1" : 1, "p2" : -1, "p3" : 1 } { "p1" : 1, "p3" : 1, "p2" : 1 } в последнем примере поменяны местами p3 и p2
Max
просто насколько я правильно понял - индексы не будут юзатся вместе если одно поле - это сортировка, а второй - выборрка
Nick
но при этом для обычного find индекс будет использован для люой комбинации этих трех полей
Max
но при этом для обычного find индекс будет использован для люой комбинации этих трех полей
понял, спасибо. тяжко немного с индексами с непривычки) я так понимаю 100% можно понять нужен ли индекс, если повесить его на коллекцию - поганять запросы и посмотреть екзекъюшен план?
Nick
именно
Nick
explain() в помощь
Anonymous
Здравствуйте, вопрос - если в папке с mongo нет папки rollback, значит ли это что нет роллбеков? (3.4)
Anonymous
Доброго времени суток, нужна помощь подскажите как задампить базу монго при этом архивируя каждую базу в одельный архив и использовать сжатие, зарание благодарен
Anonymous
Всем здрасьте.