mongodb - 如何在 mongodb 的数组中对嵌入的对象进行分组
问题描述
我有这种形式的文件:
Item:[{
product:"shovel"
price: 100
dateAdded: 2018-11-28 18:28:12.356
}
{
product:"wheel barrow"
price: 500
dateAdded: 2018-11-28 18:28:12.357
}
{
product:"Boot"
price: 500
dateAdded: 2018-11-29 18:29:12.357
}
]
我想根据添加日期对数组中的对象进行分组,即生成表单:
Item:[
[
{
product:"Shovel"
price: 100
dateAdded: 2018-11-28 18:28:12.356
}
{
product:"Wheel barrow"
price: 500
dateAdded: 2018-11-28 18:28:12.357
}
]
[
{
product:"Boot"
price: 500
dateAdded: 2018-11-29 18:29:12.357
}
]
]
关于使用 mongodb 的聚合查询的任何想法
解决方案
您可以分组$dayOfYear
并使用$dateFromString
这样的方式从您那里获取日期string
:
db.collection.aggregate([
{
"$group": {
"_id": {
$dayOfYear: {
$dateFromString: {
dateString: "$dateAdded"
}
}
},
"data": {
"$push": "$$CURRENT"
}
}
},
{
$project: {
_id: 0
}
}
])
结果将是:
[
{
"data": [
{
"_id": ObjectId("5a934e000102030405000002"),
"dateAdded": "2018-11-29 18:29:12.357",
"price": 500,
"product": "Boot"
}
]
},
{
"data": [
{
"_id": ObjectId("5a934e000102030405000000"),
"dateAdded": "2018-11-28 18:28:12.356",
"price": 100,
"product": "shovel"
},
{
"_id": ObjectId("5a934e000102030405000001"),
"dateAdded": "2018-11-28 18:28:12.357",
"price": 500,
"product": "wheel barrow"
}
]
}
]
然后,您可以使用 JSArray.reduce
等将其简单地展平。
推荐阅读
- python - 如何使用文件管道使用 Python/Scrapy 下载 (PDF) 文件?
- css - CSS:你能在一个类中引用一个类吗?
- google-apps-script - 是否可以为 Google 表单生成自动填充脚本?
- google-apps-script - 需要优化 Google Apps 脚本以减少脚本运行时间
- python - 如何在 matplotlib 中使用渲染球做散点图?
- php - 启用 bcmath 模块 PHP 7.2 服务器 CLI
- angular - JWT 拦截器删除 contenttype 标头
- python - 在整个数据帧中搜索变量并返回第一次出现的切片
- c# - 如何从 .Net Core 项目/解决方案中删除 .ncrunchproject 文件(或任何其他类似文件)
- python - Pandas 中 LISTAGG 的等价物是什么?