mongodb - 如何按月获取交易数量?
问题描述
我想从数据库中生成融洽的关系。有一个存储订单的数据库。每条记录如下所示:
{
"_id": {
"$oid": "5ec7916eff6e89814722n4y8"
},
"detais": [
{
"name": "Hood",
"quantity": 2
},
{
"name": "Tire",
"quantity": 4
},
{
"name": "Door",
"quantity": 4
},
{
"name": "Headlights",
"quantity": 3
}
],
"date": {
"$date": "2004-09-29T10:37:45Z"
},
"_class": "com.carShop.Order"
}
我需要了解每个细节,按月获取他们的数量,如下所示:
[
{
"date": "2004-09",
"detais": [
{
"name": "Hood",
"quantity": 12
},
{
"name": "Tire",
"quantity": 43
},
...
]
},
{
"date": "2004-10",
"detais": [
{
"name": "Hood",
"quantity": 2
},
{
"name": "Tire",
"quantity": 15
},
...
]
},
....
]
任何帮助表示赞赏。
解决方案
试试这个:
db.collection.aggregate([
{
$group: {
_id: { y: { $year: "$date" }, m: { $month: "$date" } },
detais: { $push: "$detais" }
}
},
{
$set: {
date: {
$dateFromParts: {
"year": "$_id.y",
"month": "$_id.m",
"day": 1
}
}
}
}
])
推荐阅读
- printing - 为什么我得到一个 (# # #) 结果?
- c++ - Windows 10 上 std::sleep_for 的不可预测行为
- android - 如何检测在画布上绘制的 shapedrawable 是否被触摸?
- java - 如何触发自定义意图的响应?
- angularjs - AngularJS - 概念理解视图问题(ng-if、ng-switch)
- java - 在不编译的情况下运行 Java 程序
- java - 如何使用 SpringData 在字符串中以随机顺序在多个 LIKE 中搜索单词
- c++ - 使用 rsa 和 windows crypto api 加密/解密字符串和文件
- apache-spark - Spark SQL 广播提示中间表
- reactjs - 如何将值从组件传递到 Formik 多步表单向导?