4

query参照フィールドのキー名として使用しようとしたときに、MongoDBv2.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のバグですか?

4

1 に答える 1

2

文書化されていない予約済みフィールド名があると思います。私は同じ問題に遭遇しました。

于 2012-08-23T12:13:07.933 に答える