猫鼬只获得一个字段的长度

时间:2014-09-25 14:08:31

标签: node.js mongodb mongoose

这是我的Mongoose架构的一个例子:

mongoose.model('Support', {
  createdBy: mongoose.Schema.Types.ObjectId,
  title: String,
  replies: { type: Array, default: [] }
}

回复数组可以包含几个对象,我对第一个查询不感兴趣,但我确实需要数组的长度。

这个问题是否有猫鼬解决方案?目前我只是遍历每个文档。

到目前为止我的代码:

Support.find({}, function(err, docs) {
  if (err) throw err;

  async.each(docs, function(doc, next) {
    doc.replies = doc.replies.length;
    next();
  }, function() {
    /* Work with the result */
  }
});

1 个答案:

答案 0 :(得分:2)

您可以使用$size运算符和aggregate来获取数组中的项目数:

Support.aggregate(
    {$project: {
        createdBy: 1,
        title: 1,
        replies: {$size: '$replies'}
    }},
    function(err, docs) { ... }
);