我正在使用範圍查詢處理分頁功能。我使用這個測試查詢在蒙戈外殼:如何在不使用mongo shell的情況下查詢ObjectId
> var params = {$query: {_id: {$lt: ObjectId("52b06166eff887999c6efbd9")}}, $orderby: {_id: -1}, $maxScan: 3}
> params
{
"$query" : {
"_id" : {
"$lt" : ObjectId("52b06166eff887999c6efbd9")
}
},
"$orderby" : {
"_id" : -1
},
"$maxScan" : 3
}
> db.events.find(params)
我希望能夠通過序列化params對象到Web服務(如URL查詢字符串)。但是,ObjectId
類僅在shell中可用。有沒有辦法指定ObjectId
作爲不在shell中的查詢的一部分?我已經試過以下爲$lt
值沒有成功:
'ObjectId("52b06166eff887999c6efbd9")'
'new ObjectId("52b06166eff887999c6efbd9")'
{"$oid" : "52b06166eff887999c6efbd9"}
感謝您的澄清。雖然我也在下面提到,我在客戶端JavaScript中這樣做,所以我不確定是否有適用的驅動程序... – ytran
@ytran在這種情況下,這一切都歸結爲請求如何碰到'mongo'外殼。從它的聲音中,你可能正在做的是寫一個文件並將其管入「mongo」外殼。如果是這樣的話,你可以解析_id字段並用ObjectId('+ string +')替換_id字符串' –
@ytran然而,你應該小心,這很容易讓MongoDB實例失效。例如,這個查詢可以傳遞到你的webhook中:'{「$ where」:「while(1 = 1){};」 }' –