从MongoDB和Mongoose中的多个文档创build单个文档

我对MongoDB和Mongoose很新,偶然发现下面这个问题:我收集了大约600个这种(缩写)格式的文档:

{ _id: ObjectId(<Integer>), sA: [ { age: { value: <Integer> } } ] } 

文件中的年龄值范围是从0到大约100,但并不是所有的值都被表示出来。 我想输出一个单一的对象的forms

 { labels: [<Integer>, <Integer>, ...], data: [<Integer>, <Integer>, ...] } 

其中标签是包含所有文档的所有年龄值的数组。 并且数据包含的次数,find了该年龄值。

我的问题是:

  1. 由于我对数据库相当陌生,这是甚至有可能与MongoDB?
  2. 如果是这样,是否有可能填补标签和数据arrays内的空白? 比方说,输出如下所示:

     { labels: [0,1,2,6,9] data: [1,17,4,5,3] } 

但我希望看起来像这样:

 { labels: [0,1,2,3,4,5,6,7,8,9], data: [1,17,4,0,0,0,5,0,0,3] } 

到目前为止,我还没有能够将这个格式归档,也没有使用mapReducepipe道。 我需要分两步来做吗? 就像输出一个有序的数组,然后在服务器上使用一个Javascript函数来提取和填充数据和标签数组,并在将对象发送回客户端之前填充空白处?

先谢谢你!!

我相信这是你正在寻找的东西:

 db.collection.aggregate([ { $unwind: "$sA" }, { $group: { _id: "$sA.age.value", count: {$sum: 1} } }, { $sort: { _id: 1 }}, { $group: { _id: null, labels: { $push: "$_id" }, data: { $push: "$count" } }} ]); 

不过,我不相信填补遗漏的价值是可能的。