var mongoose = require('mongoose'); // defines the database schema for this object var schema = mongoose.Schema({ projectName : String, authorName : String comment : [{ id : String, authorName : String, authorEmailAddress : { type : String, index : true } }] });
})
// Sets the schema for model var ProjectModel = mongoose.model('Project', schema); // Create a project exports.create = function (projectJSON) { var project = new ProjectModel({ projectName : projectJSON.projectName , authorName : projectJSON.authorName, comment : [{ id : projectJSON.comments.id, authorName : projectJSON.comments.authorName, authorEmailAddress : projectJSON.authorEmailAddress }); project.save(function(err) { if (err) { console.log(err); } else{ console.log("success"); } }); }
Q: I would like to receive all comments (without other document fields) that the user made in all projects
My attempt:
// assuming email address is unique per user, as user can always change displayName for instance exports.allCommentsByUser = function(userEmail, callback){ ProjectModel.find( {"comments.authorEmailAddress" : userEmail}, { "projectName" : 1, "comments.authorEmailAddress" : 1 }, callback); };
bouncingHippo
source share