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?
Merci. C'est un bug assez ennuyeux. J'utilise MongoEngine et il m'a fallu un jour pour comprendre la cause du problème. –
Veuillez voter pour le bug. En ce moment, c'est seulement moi là-bas ... – Thilo
J'ai voté et expliqué mon cas dans un commentaire. –