2012-08-23 3 views
4

J'ai rencontré ce comportement étrange de MongoDB v2.0.7 lorsque j'essayais d'utiliser query comme nom de clé pour un champ de référence.Est-ce que "query" est un nom réservé dans MongoDB?

Si j'insérera un enregistrement avec un champ de référence nommé query, MongoDB ne parvient pas à récupérer l'objet:

> db.item.insert({query: {$ref: "query", $id: ObjectId("50361887352fc04c86af4c10")}}) 
> db.item.find({query: {$ref: "query", $id: ObjectId("50361887352fc04c86af4c10")}}) 
> 

Mais, si je change le nom du champ à query_, tout va bien:

> 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") } } 

Il est aussi très bien si le champ a une valeur simple non-composé:

> db.item.insert({query: ObjectId("50361887352fc04c86af4c10")}) 
> db.item.find({query: ObjectId("50361887352fc04c86af4c10")}) 
{ "_id" : ObjectId("50361b44dd2290f4bb17a276"), "query" : ObjectId("50361887352fc04c86af4c10") } 

Ai-je raté quelque chose, ou est-ce un bug MongoDB?

Répondre

2

Je pense qu'il existe des noms de champs réservés non documentés. Je suis tombé sur the same issue.

+0

Merci. C'est un bug assez ennuyeux. J'utilise MongoEngine et il m'a fallu un jour pour comprendre la cause du problème. –

+0

Veuillez voter pour le bug. En ce moment, c'est seulement moi là-bas ... – Thilo

+0

J'ai voté et expliqué mon cas dans un commentaire. –

Questions connexes