当我尝试将其query
用作引用字段的键名时,我遇到了 MongoDB v2.0.7 的这种奇怪行为。
如果我插入带有名为 的引用字段的记录query
,MongoDB 将无法检索该对象:
> db.item.insert({query: {$ref: "query", $id: ObjectId("50361887352fc04c86af4c10")}})
> db.item.find({query: {$ref: "query", $id: ObjectId("50361887352fc04c86af4c10")}})
>
但是,如果我将字段名称更改为query_
,一切都很好:
> db.item.insert({query_: {$ref: "query", $id: ObjectId("50361887352fc04c86af4c10")}})
> db.item.find({query_: {$ref: "query", $id: ObjectId("50361887352fc04c86af4c10")}})
{ "_id" : ObjectId("503619f0dd2290f4bb17a275"), "query_" : { "$ref" : "query", "$id" : ObjectId("50361887352fc04c86af4c10") } }
如果该字段有一个简单的非复合值也可以:
> db.item.insert({query: ObjectId("50361887352fc04c86af4c10")})
> db.item.find({query: ObjectId("50361887352fc04c86af4c10")})
{ "_id" : ObjectId("50361b44dd2290f4bb17a276"), "query" : ObjectId("50361887352fc04c86af4c10") }
我错过了什么,还是这是一个 MongoDB 错误?