Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 371
Simon Walker Avatar asked Jan 07 '13 12:01

Simon Walker


People also ask

Does Mongoose auto generate ID?

_id field is auto generated by Mongoose and gets attached to the Model, and at the time of saving/inserting the document into MongoDB, MongoDB will use that unique _id field which was generated by Mongoose.

What is model name in Mongoose?

model() Function. The mongoose. model() function of the mongoose module is used to create a collection of a particular database of MongoDB.

What is the type of Mongoose ID?

By default, MongoDB creates an _id property on every document that's of type ObjectId. Many other databases use a numeric id property by default, but in MongoDB and Mongoose, ids are objects by default.

What is Mongoose model ()?

A Mongoose model is a wrapper on the Mongoose schema. A Mongoose schema defines the structure of the document, default values, validators, etc., whereas a Mongoose model provides an interface to the database for creating, querying, updating, deleting records, etc.


1 Answers

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.

like image 79
JohnnyHK Avatar answered Oct 01 '22 04:10

JohnnyHK