Populate returns whole parent document

Viewed 70

I just started learning express and mongodb. I recently faced the kind of problem, I'm trying to select all the subdocuments which are inside of Room model.

const books = await Room.find().populate('book');

But it returns whole room document when i want to select only bookings field.

Here's the book schema

const bookSchema = new mongoose.Schema({
  startDate: {
    type: Date,
    required: true,
  },
  endDate: {
    type: Date,
    required: true,
  },
  name: {
    type: String,
    required: true,
  },
  phone: {
    type: String,
    required: true,
  },
});

module.exports = mongoose.model("book", bookSchema)

And here's the room schema

const roomSchema = new mongoose.Schema({
  currentlyReserved: {
    type: Boolean,
    default: false,
  },
  people: {
    type: Number,
    required: true,
  },
  roomNumber: {
    type: Number,
    required: true,
  },
  pricePerPerson: {
    type: Number,
    required: true,
  },
  reservedUntil: {
    type: Date,
    default: null,
  },
  reservedBy: {
    type: String,
    default: null,
  },
  bookings: {
    type: [{ type: mongoose.Schema.Types.ObjectId, ref: "book" }],
  },
});

module.exports = mongoose.model("room", roomSchema);

1 Answers
Related