问题描述
我有一组员工,其中包含员工数据和一些带有开始和结束时间的事件... 我想查询数据,以便根据事件的开始和结束获取特定员工事件的子集。
import Foundation
struct Holidays : Codable {
var holidays : [HolidayDetails]
}
struct HolidayDetails : Codable {
var name : String
var date : String
}
想要的结果: _id 为 z 的员工的开始大于 x 且结束小于 y 的事件列表。
现在我正在尝试:
employees = [
{
_id: 5,events: [
{
start:5,end:10
},{
start:15,end:20
},{
start:21,end:26
},]
},{
_id: 6,events: [
{
start:3,end:22
},{
start:23,]
}
]
但我仍然无法使用 $gt/$lt 过滤子集。
解决方法
这会起作用
db.collection.aggregate([
{
$match: {
"_id": 5,},{
$unwind: "$events"
},{
$match: {
"events.start": {
$gte: 15
},"events.end": {
$lte: 250
}
}
}
])