> db.foo.save({'foo': [{f0: 'a', f1: 'b'}, {f0: 'c', f1: 'd'}]})
> db.foo.save({'foo': [{f0: 'a', f1: 'e'}, {f0: 'f', f1: 'g'}]})
> db.foo.save({'foo': [['a', 'b'], ['c', 'd']]})
> db.foo.save({'foo': [['a', 'e'], ['f', 'g']]})
> db.foo.find({}, {'foo.f1': 1})
{ "_id" : ObjectId("52dddf7cbeb971f4081ea48a"), "foo" : [ { "f1" : "b" }, { "f1" : "d" } ] }
{ "_id" : ObjectId("52dddf83beb971f4081ea48b"), "foo" : [ { "f1" : "e" }, { "f1" : "g" } ] }
{ "_id" : ObjectId("52dddf88beb971f4081ea48c"), "foo" : [ [ ], [ ] ] }
{ "_id" : ObjectId("52dddf8dbeb971f4081ea48d"), "foo" : [ [ ], [ ] ] }
> db.foo.find({}, {'foo.1': 1})
{ "_id" : ObjectId("52dddf7cbeb971f4081ea48a"), "foo" : [ { }, { } ] }
{ "_id" : ObjectId("52dddf83beb971f4081ea48b"), "foo" : [ { }, { } ] }
{ "_id" : ObjectId("52dddf88beb971f4081ea48c"), "foo" : [ [ ], [ ] ] }
{ "_id" : ObjectId("52dddf8dbeb971f4081ea48d"), "foo" : [ [ ], [ ] ] }
このようなネストされた配列に関連するいくつかの質問があります (タイトルにネストされた配列が含まれる実質的にすべての SO の質問は、実際には 2D のネストされた配列ではなく、ルート ドキュメントにネストされた単一の配列を参照していることに注意してください。私の知る限りでは、 、これは重複ではありません)。
- 上記のように、ネストされた 2D 配列で射影を実行する方法はありますか?
- foo 配列の配列の 2 番目の要素にインデックスを作成するにはどうすればよいですか? 繰り返しますが、おそらく foo.1 は機能しません。
正しい答え (TM) は、それを行わず、サブドキュメントの配列、ダミー (NDTAUAAOSD) を使用することですが、a) 好奇心 - 答えが見つからないようです。b) 残念ながら、私の制御を超えた状況がドキュメントを決定します。構造。
更新:予測から見たいことの明確化:
db.foo.find({}, {'foo.1': 1})
{ "_id" : ObjectId("52dddf88beb971f4081ea48c"), "foo" : [ ['b'], ['d'] ] }
{ "_id" : ObjectId("52dddf8dbeb971f4081ea48d"), "foo" : [ ['e'], ['g'] ] }
基本的に、内側の配列をスライスします。