[英]How to query document by Id in pure json in mongodb
在Mongodb(2.6.1)中,我需要使用純 json通過_id
查詢文檔(不使用ObjectIds)。 如mongodb擴展json中所述 ,我期望db.collection.findOne({"_id": {"$oid": "51b6eab8cd794eb62bb3e131"}})
可以正常工作,但不能正常工作。 它甚至拋出以下異常。
無法規范化查詢:BadValue未知運算符:$ oid
有人知道該怎么做嗎?
擴展的JSON語法旨在用作“傳輸”格式,因此,例如,如果您要將JSON輸出發送到遠程客戶端,仍然可以通過一種方法來確定實際實現的類型,例如ObjectId,Date,Binary等。
AFIAK唯一實現此功能的地方是C#驅動程序,該驅動程序提供json解析器實用程序方法,該方法將使用帶有擴展語法字段的JSON,然后將其“投射”到所需類型的對象中。
因此,以幾乎相同的方式,您可以實現自己的解析器例程以執行相同的操作,這只是測試代表鍵中指定的對象類型的鍵值的問題。 給定一個樣本片段:
{ "_id": { "$oid": "51b6eab8cd794eb62bb3e131" } }
簡化形式,無需遞歸檢查深度:
data = JSON.parse( json );
for ( k in data ) {
if ( data[k].hasOwnProperty("$oid") )
data[k] = new ObjectId( data[k]["$oid"] );
// etc
}
因此,僅因為您可能正在使用JavaScript,並不意味着“擴展語法”可以作為查詢源有效,但是可以像其他語言一樣將解析后的JSON后處理為該語言和查詢所需的有效對象符號接口。
一些驅動程序對_id
字段提供的“字符串”值執行類似的“廣播”,以便轉換為BSON有線協議所需的正確對象類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.