首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mongodb中纯json中如何使用Id查询文档

mongodb中纯json中如何使用Id查询文档
EN

Stack Overflow用户
提问于 2014-06-08 21:59:44
回答 1查看 2.9K关注 0票数 2

在Mongodb (2.6.1)中,我需要使用纯json (不使用_id )查询文档。正如在mongodb扩展json中提到的,我希望db.collection.findOne({"_id": {"$oid": "51b6eab8cd794eb62bb3e131"}})能够工作,但它没有工作。它甚至会引发以下异常。

无法规范化查询: BadValue未知操作符:$oid

有人知道怎么做吗?

EN

回答 1

Stack Overflow用户

发布于 2014-06-09 01:43:31

扩展JSON语法是一种“传输”格式,因此如果您向远程客户端发送JSON,仍然可以确定实际实现的类型,如ObjectId、日期、二进制等。

实现此功能的惟一位置是C#驱动程序,它提供了一个json解析器实用程序方法,它将使用带有扩展语法字段的JSON,然后将这些转换为所需类型的对象。

因此,在很大程度上,您可以实现自己的解析器例程来做很多相同的事情,这只是一个测试键值的问题,它代表了键中指定的对象的类型。给出一个样本碎片:

代码语言:javascript
复制
{ "_id": { "$oid": "51b6eab8cd794eb62bb3e131" } }

简化形式,无需深度递归检查:

代码语言:javascript
复制
data = JSON.parse( json );

for ( k in data ) {
    if ( data[k].hasOwnProperty("$oid") )
        data[k] = new ObjectId( data[k]["$oid"] );
    // etc
}

因此,仅仅因为您使用的是JavaScript,并不意味着“扩展语法”作为查询源是有效的,但是您可以像其他语言一样,将解析的JSON处理为该语言和查询接口所需的有效对象表示法。

一些驱动程序对针对_id字段提供的"string“值执行类似的”强制转换“,以便将其转换为BSON线路协议所需的正确对象类型。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24111273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档