Anonymous
Установите окно, чтобы пометить каждый сеанс холостого хода
Сообщение
Anonymous » 23 фев 2025, 10:04
У меня есть набор данных, который входит и выходит из холостого хода, и я хочу дать каждому сеансу холостого хода идентификатор < /p>
Код: Выделить всё
{
_id: ObjectId('67ba93d7f883e7c506027022'),
device_id: 'ABC123',
timestamp: ISODate('2025-02-22T10:00:00.000Z'),
status: 'active',
location: { lat: 40.7128, lng: -74.006 },
prev_status: null,
prev_timestamp: null,
new_idle_session: 1
},
{
_id: ObjectId('67ba93d7f883e7c506027023'),
device_id: 'ABC123',
timestamp: ISODate('2025-02-22T10:05:00.000Z'),
status: 'idle',
location: { lat: 40.713, lng: -74.007 },
prev_status: 'active',
prev_timestamp: ISODate('2025-02-22T10:00:00.000Z'),
new_idle_session: 1
},
{
_id: ObjectId('67ba93d7f883e7c506027024'),
device_id: 'ABC123',
timestamp: ISODate('2025-02-22T10:10:00.000Z'),
status: 'idle',
location: { lat: 40.7135, lng: -74.008 },
prev_status: 'idle',
prev_timestamp: ISODate('2025-02-22T10:05:00.000Z'),
new_idle_session: 0
},
{
_id: ObjectId('67ba93d7f883e7c506027025'),
device_id: 'ABC123',
timestamp: ISODate('2025-02-22T10:15:00.000Z'),
status: 'idle',
location: { lat: 40.714, lng: -74.009 },
prev_status: 'idle',
prev_timestamp: ISODate('2025-02-22T10:10:00.000Z'),
new_idle_session: 0
},
{
_id: ObjectId('67ba93d7f883e7c506027026'),
device_id: 'ABC123',
timestamp: ISODate('2025-02-22T10:20:00.000Z'),
status: 'active',
location: { lat: 40.7145, lng: -74.01 },
prev_status: 'idle',
prev_timestamp: ISODate('2025-02-22T10:15:00.000Z'),
new_idle_session: 0
},
{
_id: ObjectId('67ba93d7f883e7c506027027'),
device_id: 'ABC123',
timestamp: ISODate('2025-02-22T10:30:00.000Z'),
status: 'idle',
location: { lat: 40.715, lng: -74.011 },
prev_status: 'active',
prev_timestamp: ISODate('2025-02-22T10:20:00.000Z'),
new_idle_session: 1
},
{
_id: ObjectId('67ba93d7f883e7c506027028'),
device_id: 'ABC123',
timestamp: ISODate('2025-02-22T10:40:00.000Z'),
status: 'idle',
location: { lat: 40.7155, lng: -74.012 },
prev_status: 'idle',
prev_timestamp: ISODate('2025-02-22T10:30:00.000Z'),
new_idle_session: 0
},
{
_id: ObjectId('67ba93d7f883e7c506027029'),
device_id: 'ABC123',
timestamp: ISODate('2025-02-22T10:50:00.000Z'),
status: 'active',
location: { lat: 40.716, lng: -74.013 },
prev_status: 'idle',
prev_timestamp: ISODate('2025-02-22T10:40:00.000Z'),
new_idle_session: 0
},
{
_id: ObjectId('67ba93d7f883e7c50602702a'),
device_id: 'ABC123',
timestamp: ISODate('2025-02-22T11:00:00.000Z'),
status: 'idle',
location: { lat: 40.7165, lng: -74.014 },
prev_status: 'active',
prev_timestamp: ISODate('2025-02-22T10:50:00.000Z'),
new_idle_session: 1
},
{
_id: ObjectId('67ba93d7f883e7c50602702b'),
device_id: 'ABC123',
timestamp: ISODate('2025-02-22T11:10:00.000Z'),
status: 'idle',
location: { lat: 40.717, lng: -74.015 },
prev_status: 'idle',
prev_timestamp: ISODate('2025-02-22T11:00:00.000Z'),
new_idle_session: 0
}
]
< /code>
Я бы хотел, чтобы каждый раз, когда идентификатор сеанса выглядел так < /p>
{
"device_id": "ABC123",
"timestamp": ISODate("2025-02-22T10:00:00.000Z"),
"status": "active",
"location": { "lat": 40.7128, "lng": -74.006 },
"new_idle_session": 1,
"idle_session_id": 1
},
{
"device_id": "ABC123",
"timestamp": ISODate("2025-02-22T10:05:00.000Z"),
"status": "idle",
"location": { "lat": 40.713, "lng": -74.007 },
"new_idle_session": 1,
"idle_session_id": 1
},
{
"device_id": "ABC123",
"timestamp": ISODate("2025-02-22T10:10:00.000Z"),
"status": "idle",
"location": { "lat": 40.7135, "lng": -74.008 },
"new_idle_session": 0,
"idle_session_id": 1
},
{
"device_id": "ABC123",
"timestamp": ISODate("2025-02-22T10:15:00.000Z"),
"status": "idle",
"location": { "lat": 40.714, "lng": -74.009 },
"new_idle_session": 0,
"idle_session_id": 1
},
{
"device_id": "ABC123",
"timestamp": ISODate("2025-02-22T10:20:00.000Z"),
"status": "active",
"location": { "lat": 40.7145, "lng": -74.01 },
"new_idle_session": 0,
"idle_session_id": 1
},
{
"device_id": "ABC123",
"timestamp": ISODate("2025-02-22T10:30:00.000Z"),
"status": "idle",
"location": { "lat": 40.715, "lng": -74.011 },
"new_idle_session": 1,
"idle_session_id": 2
},
{
"device_id": "ABC123",
"timestamp": ISODate("2025-02-22T10:40:00.000Z"),
"status": "idle",
"location": { "lat": 40.7155, "lng": -74.012 },
"new_idle_session": 0,
"idle_session_id": 2
},
{
"device_id": "ABC123",
"timestamp": ISODate("2025-02-22T10:50:00.000Z"),
"status": "active",
"location": { "lat": 40.716, "lng": -74.013 },
"new_idle_session": 0,
"idle_session_id": 2
},
{
"device_id": "ABC123",
"timestamp": ISODate("2025-02-22T11:00:00.000Z"),
"status": "idle",
"location": { "lat": 40.7165, "lng": -74.014 },
"new_idle_session": 1,
"idle_session_id": 3
},
{
"device_id": "ABC123",
"timestamp": ISODate("2025-02-22T11:10:00.000Z"),
"status": "idle",
"location": { "lat": 40.717, "lng": -74.015 },
"new_idle_session": 0,
"idle_session_id": 3
}
]
< /code>
И я использовал это, но это настройка все на 4 < /p>
"$setWindowFields": {
"partitionBy": "$device_id",
"sortBy": { "timestamp": 1 },
"output": {
"idle_session_id": {
"$sum": "$new_idle_session"
}
}
}
}
Что я могу разделить, чтобы получить сеансы на холостое ходу>
Подробнее здесь:
https://stackoverflow.com/questions/794 ... le-session
1740294257
Anonymous
У меня есть набор данных, который входит и выходит из холостого хода, и я хочу дать каждому сеансу холостого хода идентификатор < /p> [code]{ _id: ObjectId('67ba93d7f883e7c506027022'), device_id: 'ABC123', timestamp: ISODate('2025-02-22T10:00:00.000Z'), status: 'active', location: { lat: 40.7128, lng: -74.006 }, prev_status: null, prev_timestamp: null, new_idle_session: 1 }, { _id: ObjectId('67ba93d7f883e7c506027023'), device_id: 'ABC123', timestamp: ISODate('2025-02-22T10:05:00.000Z'), status: 'idle', location: { lat: 40.713, lng: -74.007 }, prev_status: 'active', prev_timestamp: ISODate('2025-02-22T10:00:00.000Z'), new_idle_session: 1 }, { _id: ObjectId('67ba93d7f883e7c506027024'), device_id: 'ABC123', timestamp: ISODate('2025-02-22T10:10:00.000Z'), status: 'idle', location: { lat: 40.7135, lng: -74.008 }, prev_status: 'idle', prev_timestamp: ISODate('2025-02-22T10:05:00.000Z'), new_idle_session: 0 }, { _id: ObjectId('67ba93d7f883e7c506027025'), device_id: 'ABC123', timestamp: ISODate('2025-02-22T10:15:00.000Z'), status: 'idle', location: { lat: 40.714, lng: -74.009 }, prev_status: 'idle', prev_timestamp: ISODate('2025-02-22T10:10:00.000Z'), new_idle_session: 0 }, { _id: ObjectId('67ba93d7f883e7c506027026'), device_id: 'ABC123', timestamp: ISODate('2025-02-22T10:20:00.000Z'), status: 'active', location: { lat: 40.7145, lng: -74.01 }, prev_status: 'idle', prev_timestamp: ISODate('2025-02-22T10:15:00.000Z'), new_idle_session: 0 }, { _id: ObjectId('67ba93d7f883e7c506027027'), device_id: 'ABC123', timestamp: ISODate('2025-02-22T10:30:00.000Z'), status: 'idle', location: { lat: 40.715, lng: -74.011 }, prev_status: 'active', prev_timestamp: ISODate('2025-02-22T10:20:00.000Z'), new_idle_session: 1 }, { _id: ObjectId('67ba93d7f883e7c506027028'), device_id: 'ABC123', timestamp: ISODate('2025-02-22T10:40:00.000Z'), status: 'idle', location: { lat: 40.7155, lng: -74.012 }, prev_status: 'idle', prev_timestamp: ISODate('2025-02-22T10:30:00.000Z'), new_idle_session: 0 }, { _id: ObjectId('67ba93d7f883e7c506027029'), device_id: 'ABC123', timestamp: ISODate('2025-02-22T10:50:00.000Z'), status: 'active', location: { lat: 40.716, lng: -74.013 }, prev_status: 'idle', prev_timestamp: ISODate('2025-02-22T10:40:00.000Z'), new_idle_session: 0 }, { _id: ObjectId('67ba93d7f883e7c50602702a'), device_id: 'ABC123', timestamp: ISODate('2025-02-22T11:00:00.000Z'), status: 'idle', location: { lat: 40.7165, lng: -74.014 }, prev_status: 'active', prev_timestamp: ISODate('2025-02-22T10:50:00.000Z'), new_idle_session: 1 }, { _id: ObjectId('67ba93d7f883e7c50602702b'), device_id: 'ABC123', timestamp: ISODate('2025-02-22T11:10:00.000Z'), status: 'idle', location: { lat: 40.717, lng: -74.015 }, prev_status: 'idle', prev_timestamp: ISODate('2025-02-22T11:00:00.000Z'), new_idle_session: 0 } ] < /code> Я бы хотел, чтобы каждый раз, когда идентификатор сеанса выглядел так < /p> { "device_id": "ABC123", "timestamp": ISODate("2025-02-22T10:00:00.000Z"), "status": "active", "location": { "lat": 40.7128, "lng": -74.006 }, "new_idle_session": 1, "idle_session_id": 1 }, { "device_id": "ABC123", "timestamp": ISODate("2025-02-22T10:05:00.000Z"), "status": "idle", "location": { "lat": 40.713, "lng": -74.007 }, "new_idle_session": 1, "idle_session_id": 1 }, { "device_id": "ABC123", "timestamp": ISODate("2025-02-22T10:10:00.000Z"), "status": "idle", "location": { "lat": 40.7135, "lng": -74.008 }, "new_idle_session": 0, "idle_session_id": 1 }, { "device_id": "ABC123", "timestamp": ISODate("2025-02-22T10:15:00.000Z"), "status": "idle", "location": { "lat": 40.714, "lng": -74.009 }, "new_idle_session": 0, "idle_session_id": 1 }, { "device_id": "ABC123", "timestamp": ISODate("2025-02-22T10:20:00.000Z"), "status": "active", "location": { "lat": 40.7145, "lng": -74.01 }, "new_idle_session": 0, "idle_session_id": 1 }, { "device_id": "ABC123", "timestamp": ISODate("2025-02-22T10:30:00.000Z"), "status": "idle", "location": { "lat": 40.715, "lng": -74.011 }, "new_idle_session": 1, "idle_session_id": 2 }, { "device_id": "ABC123", "timestamp": ISODate("2025-02-22T10:40:00.000Z"), "status": "idle", "location": { "lat": 40.7155, "lng": -74.012 }, "new_idle_session": 0, "idle_session_id": 2 }, { "device_id": "ABC123", "timestamp": ISODate("2025-02-22T10:50:00.000Z"), "status": "active", "location": { "lat": 40.716, "lng": -74.013 }, "new_idle_session": 0, "idle_session_id": 2 }, { "device_id": "ABC123", "timestamp": ISODate("2025-02-22T11:00:00.000Z"), "status": "idle", "location": { "lat": 40.7165, "lng": -74.014 }, "new_idle_session": 1, "idle_session_id": 3 }, { "device_id": "ABC123", "timestamp": ISODate("2025-02-22T11:10:00.000Z"), "status": "idle", "location": { "lat": 40.717, "lng": -74.015 }, "new_idle_session": 0, "idle_session_id": 3 } ] < /code> И я использовал это, но это настройка все на 4 < /p> "$setWindowFields": { "partitionBy": "$device_id", "sortBy": { "timestamp": 1 }, "output": { "idle_session_id": { "$sum": "$new_idle_session" } } } } [/code] Что я могу разделить, чтобы получить сеансы на холостое ходу> Подробнее здесь: [url]https://stackoverflow.com/questions/79460819/set-windowing-to-label-each-idle-session[/url]