我有mongo
个对象,希望通过mongoose
访问我的网络应用。我定义的模式有Object
存储用户ID和3级值(是,可能或不)。
e.g。
"user_info": {
"<id_value_1>": "y",
"<id_value_2>": "n"
}
上面的id_value_*
是用户会话ID,因此是一长串随机字符。如何为此创建mongoose
Schema
?
user_info: {String, String}
会有效吗?
我可以对其进行重组,以便user_info
是一个对象数组{ "sessionid": "<value>", "value: "y"}
,这没关系,这是最好的选择吗?
答案 0 :(得分:10)
如果您避免使用模式中的动态密钥并按照第二个想法:
,那将会更好user_info: [{sessionid: String, value: String}]
您可以使用$
positional operator按user_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" ]
});