创建Schema并检索mongoose嵌套对象数组值

时间:2014-07-05 16:25:30

标签: node.js mongoose

实际上我的目标是找到每个类别花费的总时间,例如在解决方案中

或结算类别,请给我一个解决方案,我是mongoose的新手,所以我

不知道实现这个的正确方法(是否可以使用MapandReduce方法?)。

先谢谢。

    userSchema = mongoose.Schema({
        username: {
            type: String,
            required: true
        },
        type: String,
        timesheet: {
            created: {
                type: Date
            },
            categories: [{
                catname: String,
                cusname: String,
                hours: Number
            }]

        }
    });
    var User = mongoose.model('User', userSchema);

    module.exports = function (app) {

        var usr = {
            username: "Ardrew",
            type: "Billing",
            timesheet: {
                created: new Date('2014-06-04'),
                categories: [{
                    catname: "Solution",
                    cusname: "IBM",
                    hours: 8
                }, {
                    catname: "Solution",
                    cusname: "AT&T",
                    hours: 4
                }, {
                    catname: "Sales",
                    cusname: "AT&T",
                    hours: 4
                }]
            }
        }

        var user = new User(usr);      

        user.save(function (err, user) {


        });


        /*  User.find({"timesheet.categories.catname":"Solution"},function(err,result){
                   console.log(result)
          }*/

1 个答案:

答案 0 :(得分:0)

Model.find向集合查询与第一个参数中提供的条件匹配的文档。例如:

User.find({type: 'Sales'}, function (err, docs) { })

此示例查询将查找typeSales的所有文档。回调接收一个可以迭代的游标。

但在你的情况下,甚至不需要致电findModel#save返回回调中的文档,因此您可以访问以下字段:

user.save(function(err, user) {
   console.log(user.timesheet.categories);
});