Значение пустой строки MongoDB vs null value

В производстве MongoDB, если значение ключа пусто или не указано (необязательно), следует использовать пустое строковое значение или использовать значение null для значения.

1) Есть ли какие-либо профи против минусов между использованием пустой строки vs null?

2) Есть ли какие-либо профи против cons, если я установил значение для undefined для удаления свойств из существующего документа doc vs, позволяющего присвоить значения свойства как пустой строке, так и null?

Спасибо

Ответы

Ответ 1

Я думаю, что лучший способ - undefined, поскольку я бы предложил не включать этот ключ вообще. Mongo не работает как SQL, где вы должны иметь по крайней мере null в каждом столбце. Если у вас нет значения, просто не включайте ключ. Затем, если вы делаете запрос для всех документов, где этот ключ не существует, он будет работать правильно, иначе нет. Также, если вы не используете ключ, вы сохраняете немного места на диске. Правильно ли это в Монго.

function deleteEmpty (v) {
   if(v==null){
     return undefined;
   }
   return v;
}

var UserSchema = new Schema({
email: { type: String, set: deleteEmpty } 
});

Ответ 2

я бы сказал, что null указывает на отсутствие значения, а пустая строка указывает, что это значение, но оно пустое. При чтении данных вы можете различать пустые значения и несуществующие значения. Тем не менее это зависит от вашего случая использования

Ответ 3

Этот вопрос был дан мне как минимум 4 раза, а поиск в Google даст вам много информации.

Вы должны принять во внимание, что удаление ключа означает. Если ваш документ в конечном итоге будет использовать эту схему в большинстве своих определенных состояний, в приложении, то вы могли бы видеть много движения документа, это избавляет от необходимости иметь эти ключи: пространство. Те пары байтов, которые вы сэкономите в космосе, будут бесполезны, и вы получите эффект швейцарского сыра.

Однако, если вы вообще не используете эти поля, то наличие этих нескольких лишних байтов с миллионами документов в вашем рабочем наборе может вызвать реальные проблемы, которых не должно быть (если вы по какой-то причине хотите перетащить много документов в ваш рабочий набор), так как для космической проблемы MongoDB принципиально имеет космическую проблему, и я действительно не знал, что упускаю пару ключей, чтобы сделать что-нибудь, чтобы помочь этому.