MongoDBでは、フィールドは複数の値(値の配列)を持つことができます。それぞれにインデックスが付けられているため、任意の値でフィルタリングできます。しかし、複数の値を持つフィールドを「並べ替え」ることもできますか?その結果はどうなりますか?
アップデート:
> db.test.find().sort({a:1})
{ "_id" : ObjectId("4f27e36b5eaa9ebfda3c1c53"), "a" : [ 0 ] }
{ "_id" : ObjectId("4f27e3845eaa9ebfda3c1c54"), "a" : [ 0, 1 ] }
{ "_id" : ObjectId("4f27df6e5eaa9ebfda3c1c4c"), "a" : [ 1, 1, 1 ] }
{ "_id" : ObjectId("4f27df735eaa9ebfda3c1c4d"), "a" : [ 1, 1, 2 ] }
{ "_id" : ObjectId("4f27df795eaa9ebfda3c1c4e"), "a" : [ 2, 1, 2 ] }
{ "_id" : ObjectId("4f27df7f5eaa9ebfda3c1c4f"), "a" : [ 2, 2, 1 ] }
{ "_id" : ObjectId("4f27df845eaa9ebfda3c1c50"), "a" : [ 2, 1 ] }
{ "_id" : ObjectId("4f27e39a5eaa9ebfda3c1c55"), "a" : [ 2 ] }
長さが等しくない配列では、長い配列は短い配列よりも「低く」なります
では、なぜ[0]は[0,1]の前にあるのに、[2]は[2,1]の後にあるのでしょうか。ソートは最初の配列要素でのみ行われるのでしょうか?または最低のもの?そしてその後は挿入順ですか?
また、これは(テーブルスキャンではなく)インデックススキャンの場合にどのように実装されますか?