如何在猫鼬中使用聚合

Posted

技术标签:

【中文标题】如何在猫鼬中使用聚合【英文标题】:How to use Aggregate in mongoose 【发布时间】:2015-02-27 00:08:40 【问题描述】:

如何在 mongoose 中定义以下 MongoDB 聚合查询:

db.contacts.aggregate([$group:  "_id":  code: "$Code", name: "$Name"   ])

查询的目的是提取不同代码和名称的列表。

我目前的型号代码是:

'use strict';

var mongoose = require('mongoose'),
    Schema = mongoose.Schema,
    ObjectId = Schema.ObjectId;

var fields = 
    Code:  type: String ,
    Name:  type: String 
;

var contactSchema = new Schema(fields);

module.exports = mongoose.model('Contacts', contactSchema);

路由器如下所示:

api.contacts = function (req, res) 
Contacts.find( AgencyTranslation: /^BROADCASTING/ , function(err, contacts) 
  if (err) 
    res.json(500, err);
   else     
    res.json(contacts: contacts);
  
);

我尝试了各种变体,还查看了示例代码:mongoose API docs,但我似乎无法让它工作。

(注意:上述查询在 MongoDB 控制台中确实有效。)

【问题讨论】:

只需致电Contacts.aggregate()。方法在模型中定义,语法相同。 【参考方案1】:

试试这个

Contacts.aggregate($group:  "_id":  code: "$Code", name: "$Name"   , function(err, contacts) 
   ...
);

或者,如果您需要这个AgencyTranslation: /^BROADCASTING/ 条件,请使用$match

Contacts.aggregate([
   $match :  AgencyTranslation: /^BROADCASTING/  ,
   $group:  "_id":  code: "$Code", name: "$Name"   
], function(err, contacts) 
  // ...
);

【讨论】:

以上是关于如何在猫鼬中使用聚合的主要内容,如果未能解决你的问题,请参考以下文章

如何仅在猫鼬中使用聚合填充嵌套在对象数组中的字段?

在猫鼬中填充+聚合[重复]

如何使用猫鼬需要验证在猫鼬中插入多个文档?

如何在猫鼬中使用 match 和 groupby?

如何在猫鼬中查询多个集合

如何使用各种参数在猫鼬中进行搜索查询?