Home > other >  best mongodb schema
best mongodb schema

Time:03-23

I have a mongodb schema. I wonder if there is a better approach for this schema.

question: {
    type: String,
    required: true,
  },
  image1: {
    type: String,
    required: true,
  },
  image2: {
    type: String,
    required: true,
  },
  imageOneVotes: {
    type: Number,
    default: 0,
  },
  imageTwoVotes: {
    type: Number,
    default: 0,
  },
  votes: {
    type: Number,
    default: 0,
  }

I need a better schema for this. When I click on the image1 I expect the imageOneVotes to increase. I think it is a bit strange to implement that feature if I go with this schema.

CodePudding user response:

You can either have images as an array of objects, or if you are sure there will only ever be two images then just make each image an object with a "votes" field inside it.

question: {
  type: String,
  required: true
},
images: [{
  url: {type: String, required: true},
  votes: {type: Number, required: true, default: 0}  
}],
votes: {type: Number, required: true, default: 0}

OR

question: {
  type: String,
  required: true
},
imageOne: {
  url: {type: String, required: true},
  votes: {type: Number, required: true, default: 0},
},
imageTwo: {
  url: {type: String, required: true},
  votes: {type: Number, required: true, default: 0},
},
votes: {type: Number, required: true, default: 0}

CodePudding user response:

Your mongoDB schema seems good except for the 'votes' attribute which seems unclear.

Is 'votes' the total of both votes attributes? I don't think you need it, you could add both votes everytime you need the total. It will get rid of an unnecessary validation.

For example -> adding a vote to an image then add one vote to the total is an extra step

The principal goal of a db is to have a clear view of the data and then be able to easily work with it.

  • Related