3

私はMongoDBが大好きで、ある種のあいまいさが私に起こりました。誰かがこれを以前に見たことがあり、おそらく答えを知っているだろうかと思っていました:-)。

mongoでは、サブオブジェクトに到達するには、たとえば次のようにドット表記を使用します。

db.persons.find({ "address.state" : "CA" })

これは十分に単純です。mongoは次の違いにどのように対処しますか(あるとしても)。

{
    "address" { "state" : "CA" }
}

{
    "address.state" : "CA"
}

私の知る限り、ドットはキーで合法だからです。さらに、これも合法的なドキュメントになると思います。

{
    "address" { "state" : "A" },
    "address.state" : "B"
}

その場合、私はこのクエリがまたはのいずれ"A"かを返すのを見ることができます"B"

db.persons.find({}, {"address.state"}) // all docs selecting address.state as result.

同様の潜在的な問題が、アレイでも発生する可能性があります。

{"a":["test"]}

これは次の方法でアクセスできます:

{"a.0"}

そしてもちろん

{"a" {"0" : "test"} }

これも次の方法でアクセスできます:

{"a.0"}

考え?経験?従来の知識は単にそれをしないのですか?

4

1 に答える 1

8

「address.state」などのキーは無効です。ここから:

フィールド名にドット(つまり.)またはヌル文字を含めることはできません。また、ドル記号(つまり$)で始めることはできません。

于 2012-04-26T12:49:53.410 に答える