Mongoose变量键名

时间:2013-01-07 12:30:36

标签: node.js mongodb schema mongoose schema-design

我有mongo个对象,希望通过mongoose访问我的网络应用。我定义的模式有Object存储用户ID和3级值(是,可能或不)。

e.g。

"user_info": {
    "<id_value_1>": "y",
    "<id_value_2>": "n"
}

上面的id_value_*是用户会话ID,因此是一长串随机字符。如何为此创建mongoose Schema

  1. user_info: {String, String}会有效吗?

  2. 我可以对其进行重组,以便user_info是一个对象数组{ "sessionid": "<value>", "value: "y"},这没关系,这是最好的选择吗?

4 个答案:

答案 0 :(得分:10)

如果您避免使用模式中的动态密钥并按照第二个想法:

,那将会更好
user_info: [{sessionid: String, value: String}]

您可以使用$ positional operatoruser_info更新单个sessionid数组元素。

答案 1 :(得分:4)

您可以尝试使用Schema Type Mixed这样

var user = new Schema({
   info:    [Schema.Types.Mixed]
 });

user.info = { any: { thing: 'i want' } };
user.markModified('info');

您可以阅读更多相关信息here

答案 2 :(得分:0)

在测试上述内容后,我发现将模式定义为user_info: { String: String }是一种有效的方法(问题中指定的选项1)。

答案 3 :(得分:0)

您可以在架构中定义对象和数组。你甚至可以将它们结合起来例如,这是一个对象数组:

var user = new Schema({
    foo: [ {
        address: {type: String},
        email: {type: String, unique: true}
    }],
    bar: [ "simple", "array" ]
});