mongodb - 我想在 MongoDB 中查找同一日期的信息
问题描述
我想查找同一日期的信息。我的数据是
[
{
"reservations": [],
"_id": "5ff62f01d274650f5f187c00",
"floorNumber": "floor 4",
"sessionInDay": "morning",
"start": "2021-01-10T00:00:00.000Z",
"seatsAvailable": 15,
"id": 1,
"__v": 0
},
{
"reservations": [],
"_id": "5ff6346be9a69310deeeabc2",
"floorNumber": "floor 4",
"sessionInDay": "morning",
"start": "2021-01-05T00:00:00.000Z",
"seatsAvailable": 15,
"id": 2,
"__v": 0
},
{
"reservations": [],
"_id": "5ff6346be9a69310deeeabc2",
"floorNumber": "floor 4",
"sessionInDay": "afternoon",
"start": "2021-01-05T00:00:00.000Z",
"seatsAvailable": 15,
"id": 3,
"__v": 0
}
]
我想合并具有相同开始日期的数据。以什么形式出来?如何查询?我要输出的数据格式:
[
{
"start": "2021-01-10T00:00:00.000Z",
"details": [
{
"reservations": [],
"_id": "5ff62f01d274650f5f187c00",
"floorNumber": "floor 4",
"sessionInDay": "morning",
"start": "2021-01-10T00:00:00.000Z",
"seatsAvailable": 15,
"id": 1
}
]
},
{
"start": "2021-01-05T00:00:00.000Z",
"details": [
{
"reservations": [],
"_id": "5ff6346be9a69310fad23413",
"floorNumber": "floor 4",
"sessionInDay": "morning",
"start": "2021-01-05T00:00:00.000Z",
"seatsAvailable": 15,
"id": 2
},
{
"reservations": [],
"_id": "5ff6346be9a69310deeeabc2",
"floorNumber": "floor 4",
"sessionInDay": "afternoon",
"start": "2021-01-05T00:00:00.000Z",
"seatsAvailable": 15,
"id": 3
}
]
}
]
最后一个问题,这一步。我应该像这样格式化数据,将其保存到数据库中,还是应该使用查询方法?
谢谢帮助我。
解决方案
- 查找同一日期的所有文档(例如 2021-01-10 ):
db.reservations.find({start:/^2021-01-10/})
- 合并相同开始日期的数据:
db.reservations.aggregate([
{$project:{date:{$substr:["$start",0,10]}, floorNumber:1,sessionDay:1,start:1,seatsAvailable:1 , id:1,"__v":1 ,_id:0 }} ,
{$group:{_id:"$date" , details:{$push:"$$ROOT"} }} ,
{$project:{date:"$_id", _id:0 ,details:1} }
])
- 关于是否需要像聚合结果那样格式化数据的问题,这在很大程度上取决于您如何使用数据,在 mongodb 中最好的是尽可能地进行非规范化,并以自然的方式将数据放在一起。被显示,所以如果在 90% 的时间里,您将按日期查询并在大多数时间显示每天的所有预订,那么在聚合结果中进行修改可能会更好......
推荐阅读
- vue.js - Vue 路由保护以区分页面重新加载(例如 F5/浏览器单击刷新按钮)和直接粘贴 URL
- python - 如何在 Python 中编写回归方程
- reactjs - 为什么我通过导入 react-chartjs-2 得到运行时错误
- powershell - 如何在 Powershell 中循环 dict(Python)
- node.js - 在 Discord.JS 中没有任何错误消息的情况下无法从用户中删除角色
- ssl - 客户端证书如何在 python 请求模块中工作?
- python - 为什么在 python 中写入文本文件时出现错误?
- c++ - 将文件解析为 3 个单独的数组
- python - 如何使用 Shapely 包从元组列表中绘制多边形
- ios - URLRequest Swift中没有与键关联的值