How come when I use mongoose findOne method, the object it found that is returned in the callback is a valid mongoose Model object (meaning I can call the mongoose model helper methods on it, like id for sub-documents or remove to delete it), and when I call mongoose find methode I just get back a javascript object representing the document i was looking for ?
findOne gives you a single mongoose document whereas find gives you an array of all matching mongoose documents back, not a cursor.
YourModel.find({ something: true }, function (err, docs) {
if (err) return handleErrorSomehow(err)
console.log(Array.isArray(docs)) // true
docs.forEach(function (doc) {
console.log(typeof doc.save) // function
})
})