Является ли плохой практикой установка идентификатора объекта mongodb в «String» вместо «Schema.Types.ObjectId»? - PullRequest
0 голосов
/ 19 февраля 2019

Я хочу знать, может ли это повлиять на производительность или другие важные вопросы с точки зрения функциональности, особенно при поиске документов в коллекции mongodb

Я сделал это

var ComputerArticleSchema = mongoose.Schema({
    _id: {
        type: String,
        required: true
    },

Обычно это делаетсякак это

_id: {
    type: Schema.Types.ObjectId,
    required: true
},

Ответы [ 3 ]

0 голосов
/ 19 февраля 2019

_id создается автоматически!

Если вы ссылаетесь на другую таблицу, используйте 'table_id' (или другое имя ключа) и задайте тип как Schema.Types.ObjectId или Schema.ObjectId.

const ObjectId = Schema.ObjectId;

user_id: { type: ObjectId, ref: 'User' }
0 голосов
/ 19 февраля 2019

Хранение строк вместо ObjectIds снижает производительность .

ObjectIds * на 1005 * меньше , чем эквивалентные строки (они представляют собой 12-байтовое двоичное значение, а не 24 символа)Строковое значение UTF-8), поэтому они занимают меньше места в памяти.

Mongo работает очень быстро, когда индексы и документы находятся в рабочем наборе (т. Е. В памяти), поэтому, уменьшая объем данных, выв состоянии удостовериться, что больше документов остается в памяти.Это особенно важно, потому что поля идентификаторов, о которых вы говорите, часто включаются в индексы.

0 голосов
/ 19 февраля 2019

Не производительность, но когда у вас есть более двух моделей и у них есть ассоциации, как вы можете связать их между собой.Итак, это необходимо.И вам не нужно вручную определять (писать), как вы это делали, mongodb автоматически создает _id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...