title: Querying nested embedded documents with Mongoose
body: <p>I'm trying to query inside an embedded document that is nested. I've attempted to 'populate' the results but that fails.</p>
  
  <p>How do I get back all of the book details inside the find call? I want all of the book objects on a users shelf that I can get data from?</p>
  
  <pre><code>###
  
  Trying to query nested embedded documents using Mongoose.
  
  Database Outline for example
  
  An Owner has multiple bookshelves which each have an array of books.
  A book is not unique, and the same book could be on many different shelves.
  
  ###
  
  mongoose = require("mongoose")
  Schema = mongoose.Schema
  mongoose.connect "localhost", "d1"
  
  bookSchema = new Schema(title: String)
  Book = mongoose.model("Book", bookSchema)
  
  shelfBookSchema = new Schema(
    book:
      type: Schema.ObjectId
      ref: "Book"
    )
  
  shelfSchema = new Schema(
    name: String
    books: [ shelfBookSchema ]
    )
  
  Shelf = mongoose.model("Shelf", shelfSchema)
  
  ownerSchema = new Schema(
    firstName: String
    shelves: [ shelfSchema ]
    )
  
  Owner = mongoose.model("Owner", ownerSchema)
  
  mongoose.connection.on "open", -&gt;
    book1 = new Book(title:"How to make stuff")
    book1.save (err) -&gt;
      throw err if err
  
      owner = new Owner(firstName:"John")
      shelf = new Shelf(name:"DIY Shelf")
      shelf.books.push
        _id: book1._id
        book: book1._id
      owner.shelves.push shelf
      owner.save (err) -&gt;
        throw err if err
  
        #Let's find one owner and get all of his bookshelves and the books they containa
        Owner.findOne().populate("shelves.books.book").exec (err, owner) -&gt;
          console.error owner.shelves[0].books
  
          ### Log shows:
  
          { book: 4fe3047401fc23e79c000003,
          _id: 4fe3047401fc23e79c000003 }]
  
          Great but how do I get the values of book like the title etc??
  
          ###
  
          mongoose.connection.db.dropDatabase -&gt;
            mongoose.connection.close()
  </code></pre>