1
db.blog.save({ title : "My First Post", author: {name : "Jane", id : 1}})

キーの順序が一致しないため、以下は何を返す必要がありますか?

db.blog.find({"author" : {"id" : 1, "name" : "Jane"}})

編集:

公式のmongodbドキュメントに基づいて、キーオーダーは(少なくともfindOne())一致する必要があります。を使用して一致のみのオブジェクトを返しませんdb.blog.findOne({"author" : {"id" : 1, "name" : "Jane"}})

4

3 に答える 3

3

クエリ セレクターのキーの順序は関係ありません。検索するドキュメントを追加するときに使用したキーの順序と一致する必要はありません。

アップデート

埋め込みドキュメントに基づいてクエリを実行する順序に依存しない方法を探しているだけの場合は、ドット表記を使用する必要があります。

db.blog.find({"author.id" : 1, "author.name" : "Jane"})
于 2012-10-18T15:33:12.330 に答える
0

通常、@JohnnyHK が示しているように、クエリ キーの順序は、あなたが示した例を除いて重要ではありません。

db.blog.find({"author" : {"id" : 1, "name" : "Jane"}})

このクエリは、完全に一致しない結果を返しません。彼が示したクエリを使用すると、次のようになります。

db.blog.find({"author.id" : 1, "author.name" : "Jane"})

キーの順序に依存しません。この違いの理由は、最初のクエリでは、オブジェクト自体で検索しているためです。クエリアは実際にそのオブジェクトを正確に検索します (最も簡単な用語で)。サブドキュメントのセットを含むフィールドで作成されたインデックスにも同じことが当てはまります。順序は重要です。

于 2012-10-18T16:51:27.043 に答える
0

JSON の定義によると、キーの順序は関係ありません。

An object is an unordered collection of zero or more name/value pairs

MongoDB については何も知りませんが、JSON の通常のルールに従っていると思います。その時点で、"My First Post" エントリが返されるはずです。

于 2012-10-18T15:33:09.067 に答える