mongoDB를 처음 사용하면서 저는 Gmail API를 사용하여 Gmail에 액세스하는 python 파일에 의해 생성 된 콜렉션을 작성했습니다. 수신 된 이메일의 수가 가장 많은 요일의 시간을 찾기 위해 질의를하십시오. 여기 내 시도했다 :mongoDB aggregate() 이메일 객체 모음에서 이메일 시간 찾기
여기db.gmail_data2.aggregate(
[{$unwind: '$payload.headers' },
{$match:{'payload.headers.name':'Date'}},
{$project:{email_hour:{$hour:"payload.headers.value"}}},
{$group:{_id:"$email_hour",total:{$max:{$sum:1}}}}])
이메일 객체가 모습입니다 같은 :
{
"id": string,
"threadId": string,
"labelIds": [
string
],
"snippet": string,
"historyId": unsigned long,
"internalDate": long,
"payload": {
"partId": string,
"mimeType": string,
"filename": string,
"headers": [
{
"name": string,
"value": string
}
],
"body": users.messages.attachments Resource,
"parts": [
(MessagePart)
]
},
"sizeEstimate": integer,
"raw": bytes
}
"이름이"날짜입니다 이메일의 날짜가 개체의 payload.headers 부분이며, "value"는 ISODate 형식의 날짜입니다. 이 쿼리는 $ max 명령없이 작동하며 모든 전자 메일에서 시간당 전자 메일 수를 제공합니다. 일단 $ max 명령을 입력하면 매시간 { "_id" : hour, "total" : 1 }
이됩니다.
$의 email_month ??? 그건 오타 야? – Veeram