gpt4 book ai didi

javascript - 如何在 Mongoose/Mongodb 中创建查询以获取此 json?

转载 作者:行者123 更新时间:2023-11-30 17:11:03 25 4
gpt4 key购买 nike

我正在尝试从我的 mongodb 中获取这样的对象,每月计算操作系统:

{1 月:{Android:30,iOS:10,winPhone:5},2 月:{Android:4,iOS:40},等等}。

这是我的 Mongoose 模式:

var MySchema = new Schema({
date: {type: Date, default: Date.now},
os: String
});

有人可以给我一个想法吗?有没有办法创建一个查询来返回整个对象,或者我应该逐个构建它,统一多个查询?

谢谢!

最佳答案

您最好使用对 MongoDB 来说更自然的输出结构,其中键是静态的,而值包含数据。然后您可以使用聚合管道来执行此操作:

MyModel.aggregate([
// Group the docs by month & os
{$group: {_id: {month: {$month: '$date'}, os: '$os'}, count: {$sum: 1}}},
// Group again by just month
{$group: {_id: '$_id.month', counts: {$push: {os: '$_id.os', count: '$count'}}}},
// Rename _id to month
{$project: {month: '$_id', counts: 1, _id: 0}}
], callback);

生成如下输出:

{
"result" : [
{
"counts" : [
{
"os" : "winPhone",
"count" : 2
},
{
"os" : "iOS",
"count" : 1
},
{
"os" : "Android",
"count" : 2
}
],
"month" : 1
},
{
"counts" : [
{
"os" : "iOS",
"count" : 2
},
{
"os" : "Android",
"count" : 1
}
],
"month" : 2
}
],
"ok" : 1
}

如果您确实想要原始格式,则可以对结果进行后处理以根据需要对其进行整形。

关于javascript - 如何在 Mongoose/Mongodb 中创建查询以获取此 json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27014819/

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