這件事情是不小心自己做了一個坑給自己踩的,
我從公司的QAT測試環境的GUI(Mongodb compass)複製了一份data,內容複製出來如下:
{
"uuid" : "2580913",
"name" : "UserName",
"id" : "A123456789",
"age" : 18,
"weight" : 70,
"height" : 175
"birthday" :{
"$numberLong" : "789798540000"
}
"registration_date": {
"$numberLong": "1677211157126"
}
}
然後在我自己本機用Studio 3T直接insert了這些相同格式的資料,都正常匯入了!
後來我在local開發的時候find用了下方的方式來搜尋(注意!其實這是錯的,這裡的$numberLong是被當作層級使用)
{"birthday.$numberLong": {"$gte": "789798540000"}}
此時local能正常取出資料,我還沒意識到問題。
後來部署到QAT後頻繁出錯,一去了解才發現,原來當時從Mongodb compass複製出來的$numberLong該資料的type,
原始資料為:
{
"uuid" : "2580913068820",
"name" : "UserName",
"id" : "A123456789",
"age" : 18,
"weight" : 70,
"height" : 175
"birthday" : 789798540000,
"registration_date": 1677211157126
}
我後來去QAT機器測了一下這段,(如果birthday的type是int)
db.user.find ({birthday:{$ type : "int" }})
結果沒有資料。我把int換成了long:
db.user.find ({birthday:{$ type : "long" }})
就出現一堆資料了。
……….
其實我一開始在把QAT的測試資料存進local這裡就出錯了!
原因是Mongodb compass在複製資料時為了區分int和long這兩個不同的type,所以加了$numberLong 這段讓我們肉眼能夠判斷資料的type,後來我把$numberLong都拿掉後,公司QAT就正常可以取得資料了。
真的是被自己給笨慘了