簡體   English   中英

如何在mongodb中的純JSON中通過Id查詢文檔

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM