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