我正在嘗試將我的集合的 _created_at 欄位決議為時間戳,或者我正在向集合中添加一個附加欄位“時間戳”。
但是,當我得到一個像 3 小時前這樣的時間戳并將其放入匹配聚合中時,我仍然會得到幾天前的檔案。我在這里做錯了什么?
[
{
'$addFields': {
'timestamp': {
'$toLong': '$_created_at'
}
}
}, {
'$match': {
'timestamp': {
'$gte': 1648365437
}
}
}
]
生成的檔案包含 3 月 22 日的 _created_at 值,而不是幾個小時前。
{
_id: "3pFlY2W5kKDDRR4Isi5AdX75"
from_address: "0xb2c76826c8a48ed5c5a06b27911177d7cc368223"
log_index: 215
to_address: "0x6262998ced04146fa42253a5c0af90ca02dfd2a3"
transaction_hash: "0xcf8ef8d4e403f66a7ac1131b5cabc7610453d0013dbd3a91f5c4172724d00ca3"
_created_at: 2022 - 03 - 22 T20: 17: 31.903 00: 00
_updated_at: 2022 - 03 - 22 T20: 19: 43.670 00: 00
block_hash: "0xdc8111c1c8b4058a71b1ca98452f37ed7712c2e0ebcc8a60b4af6833e9d6b169"
block_number: 14438210
block_timestamp: 2022 - 03 - 22 T20: 16: 05.000 00: 00
decimal: 1500.075101511569677281
token_address: "0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0"
transaction_index: 132
value: "1500075101511569677281"
confirmed: true
timestamp: 1647980251903
}
uj5u.com熱心網友回復:
從函式的官方檔案來看$toLong,
將 Date 轉換為自紀元以來的毫秒數。
因此,您應該將過濾條件乘以 1000 以將它們轉換為毫秒以進行過濾。
[
{
'$addFields': {
'timestamp': {
'$toLong': '$_created_at'
}
}
}, {
'$match': {
'timestamp': {
'$gte': 1648365437 * 1000
}
}
}
]
附帶說明的是,不將日期時間欄位存盤在正確的日期物件中通常被認為是反模式。考慮修改架構以將日期時間欄位存盤在日期而不是字串中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/450653.html
