0

I recently created a Schema with a field that consist of an array of JSON, after using the schema to save my data I realised that Mongo created _id for each element of that array. I know that _id is created for each document in mongo. But is it necessary to have _id for each element of an array. Could anyone explain this ?

This is my schema

const Exams = new Schema({
    course: { type: mongoose.SchemaTypes.ObjectId, ref: 'courses' },
    schedule: [{ 
        subject: {type: mongoose.SchemaTypes.ObjectId, ref: 'subjects'},
        date: { type: Date },
        session: { type: String }
    }]
});

The data provided to mongo is

{
      "course": "5cbda8a7a2e03c23f674a2bd",
      "schedule": [
        {
          "subject": "5c9f42f8f4dd4f31d75648a0",
          "date": "2019-04-01T18:30:00.000Z",
          "session": "FN"
        },
        {
          "subject": "5c9f430bf4dd4f31d75648a1",
          "date": "2019-04-02T18:30:00.000Z",
          "session": "FN"
        },
        {
          "subject": "5c9f4324f4dd4f31d75648a2",
          "date": "2019-04-24T18:30:00.000Z",
          "session": "FN"
        },
        {
          "subject": "5c9f4331f4dd4f31d75648a3",
          "date": "2019-04-25T18:30:00.000Z",
          "session": "FN"
        },
        {
          "subject": "5c9f4343f4dd4f31d75648a4",
          "date": "2019-04-17T18:30:00.000Z",
          "session": "FN"
        }]
    }

After saving to mongo this is how my data is.

{
    "_id" : ObjectId("5cc03291528b226405341852"),
    "course" : ObjectId("5cbda8a7a2e03c23f674a2bd"),
    "__v" : 0,
    "schedule" : [ 
        {
            "_id" : ObjectId("5cc03629a6b58e1f2ff05aae"),
            "subject" : ObjectId("5c9f42f8f4dd4f31d75648a0"),
            "date" : ISODate("2019-04-01T18:30:00.000Z"),
            "session" : "FN"
        }, 
        {
            "_id" : ObjectId("5cc03629a6b58e1f2ff05aad"),
            "subject" : ObjectId("5c9f430bf4dd4f31d75648a1"),
            "date" : ISODate("2019-04-02T18:30:00.000Z"),
            "session" : "FN"
        }, 
        {
            "_id" : ObjectId("5cc03629a6b58e1f2ff05aac"),
            "subject" : ObjectId("5c9f4324f4dd4f31d75648a2"),
            "date" : ISODate("2019-04-24T18:30:00.000Z"),
            "session" : "FN"
        }, 
        {
            "_id" : ObjectId("5cc03629a6b58e1f2ff05aab"),
            "subject" : ObjectId("5c9f4331f4dd4f31d75648a3"),
            "date" : ISODate("2019-04-25T18:30:00.000Z"),
            "session" : "FN"
        }, 
        {
            "_id" : ObjectId("5cc03629a6b58e1f2ff05aaa"),
            "subject" : ObjectId("5c9f4343f4dd4f31d75648a4"),
            "date" : ISODate("2019-04-17T18:30:00.000Z"),
            "session" : "FN"
        }
    ]
}

I did not specify _id inside the schedule array but mongo add it up automatically. How to avoid this ?

Neil Lunn
  • 148,042
  • 36
  • 346
  • 317
naveen ashok
  • 311
  • 1
  • 16

0 Answers0