A. Mongoose doesn’t create getters/setters for array indexes; without them mongoose never gets notified of the change and so doesn’t know to persist the new value. The work-around is to use available in Mongoose >= 3.2.0.

    1. doc.array.set(3, 'changed');
    2. doc.save();
    3. // if running a version less than 3.2.0, you must mark the array modified before saving.
    4. doc.markModified('array');
    5. doc.save();

    Q. Why doesn’t mongoose allow me to directly assign schemas to paths?

    A. Schemas have a one-to-one mapping with documents. Documents have save and methods along with their own pre and post hooks which would lead to code like the following:

    1. doc.user.save(); // ?
    2. doc.user.remove();// ?
    3. doc.save()

    Q. How can I enable debugging?

    A. Set the debug option to :

    All executed collection methods will log output of their arguments to your console.


    A. All collection actions (insert, remove, queries, etc) are queued until the connection opens. It is likely that an error occurred while attempting to connect. Try adding an error handler to your connection.

    1. mongoose.connect(..);
    2. mongoose.connection.on('error', handleError);
    3. // if connecting on a separate connection

    Q. Should I create/destroy a new connection for each database operation?

    A. No. Open your connection when your application starts up and leave it open until the application shuts down.


    If you’d like to contribute to this page, please visit it on github and use the button to send a pull request.