Mongoosevariables键名

我有一个mongo对象,并希望通过mongoose访问我的web应用程序。 我定义的模式有一个Object存储用户ID和一个三级值(是的,也许或不)。

例如

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

上面的id_value_* s是用户会话ID,所以是一串长长的随机字符。 我如何创build一个mongoose Schema呢?

  1. user_info: {String, String}工作?

  2. 我可以重构它,以便user_info是一个对象数组{ "sessionid": "<value>", "value: "y"} ,这将是好的,这是最好的select?

如果您避免在您的模式中使用dynamic密钥,那么您将会变得更好,并采用您的第二个想法:

 user_info: [{sessionid: String, value: String}] 

您可以使用$位置运算符通过sessionid更新单个user_info数组元素。

您可以尝试使用这种方式混合模式types

 var user = new Schema({ info: [Schema.Types.Mixed] }); user.info = { any: { thing: 'i want' } }; user.markModified('info'); 

你可以在这里阅读更多

经过上面的testing之后,我发现将模式定义为user_info: { String: String }是一种有效的方法(在问题中指定了选项1)。

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

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