“查询”是MongoDB中的保留名称吗?

时间:2012-08-23 12:07:09

标签: javascript mongodb

当我尝试使用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错误?

1 个答案:

答案 0 :(得分:2)

我认为有无证件的保留字段名称。我遇到了the same issue