Search code examples
node.jsmongodbschemamongooseschema-design

Mongoose variable key name


I have a mongo object and wish to access it via mongoose for my web app. The schema I've defined has an Object storing user ids and a 3-level value (yes, maybe or no).

e.g.

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

The id_value_*s above are the users session ids so a long string of random characters. How can I create a mongoose Schema for this?

  1. Would user_info: {String, String} work?

  2. I could restructure it so that the user_info is an array of objects { "sessionid": "<value>", "value: "y"}, which would be ok, is this the best option?


Solution

  • You'll be better off if you avoid dynamic keys in your schema and go with your second idea of:

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

    You can use the $ positional operator to update individual user_info array elements by sessionid.