数据库/模式的不同字段名称

时间:2016-01-26 07:51:00

标签: mongodb mongoose

TL:DR;是否可以在文档中使用不同的名称foobarbaz存储字段f

我目前正在计划一个新的数据库架构,它将包含大量文档(预计每天会有10到10万个文档)。所以我想缩短字段名称,因为它们会占用空间宠物文档。

但我想在我的架构中也有可读的名字。所以我的问题是:是否可以将模式字段与具有不同名称的文档字段连接?

架构:name
文件:n

1 个答案:

答案 0 :(得分:0)

尝试mongoose-aliasfield

  

插件旨在为您在DB上的文档编写快捷键,但是在读取提取的文档时可以使用长的描述性名称。这将导致记忆数据所需的存储空间减少,无需记住短键含义。

var mongoose = require('mongoose');
var fieldsAliasPlugin = require('mongoose-aliasfield');

/*Describe a Schema*/
var PersonSchema = new Schema({
    't' : {'type': Date, 'index': true, 'alias': 'timestamp'},
    'n' : {'type' : String, 'alias': 'name'},
    's' : {'type' : String, 'alias': 'surname'},
    'p' : {
        'a' : {'type' : String, 'alias': 'profile.address'},
        'pn': {'type' : String, 'alias': 'profile.phone_number'}
    }
});

/*Add field alias plugin*/
PersonSchema.plugin(fieldsAliasPlugin);

现在您的架构已创建,您可以使用别名字段名称来描述模型的实例

var person = new Person({
    'timestamp' : new Date(),
    'name'      : 'Jhon',
    'surname'   : 'Doe',
    'profile.address': 'Rue de Morgane',
    'profile.phone_number': '051-123456 78',
});

person.save();