gpt4 book ai didi

javascript - 从 MongoDB 和 Mongoose 中的多个文档创建单个文档

转载 作者:可可西里 更新时间:2023-11-01 10:22:47 25 4
gpt4 key购买 nike

我是 MongoDB 和 Mongoose 的新手,偶然发现了以下问题:我收集了大约 600 份这种(缩短的)格式的文件:

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

文档包含 0 到大约 100 之间的年龄值,但并未表示所有值。我想以

的形式输出 一个单个对象
{
labels: [<Integer>, <Integer>, ...],
data: [<Integer>, <Integer>, ...]
}

其中 labels 是一个包含所有文档的所有年龄值的数组。数据包含找到该年龄值的次数。

我的问题是:

  1. 由于我是数据库方面的新手,这甚至可以用 MongoDB 实现吗?
  2. 如果是这样,是否也可以填充标签和数据数组中的空白?可以说,输出如下所示:

    {
    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]
}

直到现在,我还无法使用聚合或 mapReduce 管道来归档这种格式。我必须分两步完成吗?就像输出一个排序数组,然后在服务器上使用 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"
}
}}
]);

不过,我认为填充缺失值是不可能的。

关于javascript - 从 MongoDB 和 Mongoose 中的多个文档创建单个文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37232836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com