我有以下格式的MongoDB文档,它们代表一个位置:
{
"_id": "632987336a2913f401318f82",
"name": "1 Ave, Infinite Loop St",
"timezone": "Europe/Paris",
"location": {
"lat": 48.858093,
"lng": 2.294694
},
"detections": [
{
"approach": "North Bound",
"class": "Person",
"datetime": "05:00 pm",
"lane": 3,
"movement": "Through"
},
{
"approach": "North Bound",
"class": "Person",
"datetime": "05:00 pm",
"lane": 3,
"movement": "Through"
},
// ...more detections
]
}
我知道我想获取的站点的_id
,但我想做的是,当我获取这个站点时,我只需要使用detections对象中的datetime
属性获取最近7天的检测。但是,我不确定如何使用mongoose来实现这一点。目前,我试图通过手动获取所有站点检测,然后自己过滤它们来实现这一点,但这是一个乏味的方法。目前,这是我如何获取站点检测:
const site = await SiteModel.findById(siteID);
const detections = site.detections;
这个answer说明了一种实现这个行为的方法,但它使用的是aggregate
,在我的例子中,键嵌套在对象数组中。我是MongoDB的新手,所以任何帮助都是非常感谢的。+
1条答案
按热度按时间4szc88ey1#
1.您需要在“日期时间”字段中存储时间戳。
1.您可以使用$elemMatch从对象数组中筛选特定数据。