2012-08-23 80 views
4

當我試圖使用query作爲引用字段的鍵名時,我遇到了MongoDB v2.0.7的這種奇怪行爲。「查詢」是MongoDB中的保留名稱嗎?

如果我插入一個名爲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錯誤?

回答

2

我認爲有未公開的保留字段名稱。我碰到the same issue

+0

謝謝。這是一個非常惱人的錯誤。我正在使用MongoEngine,它花了我一天的時間來找出問題的原因。 –

+0

請爲這個bug投票。現在,只有我在那裏... – Thilo

+0

我投票並在評論中解釋了我的情況。 –