-1

私は現在、ユース ケースのさまざまなデータベースの効率を評価しています。Mongodb では、次の構造で約 100 万個のオブジェクトを格納したいと考えています。各オブジェクトは、foo 配列に 5 ~ 10 個のオブジェクトを持ちます。

{
   name:"my name",
   foos:[
      {
         foo:"...",
         bar:"..."
      },
      {
         foo:"...",
         bar:"..."
      },
      {
         foo:"...",
         bar:"..."
      }
   ]
}

foos コレクションに特定のプロパティを持つオブジェクトが含まれているオブジェクトを検索する必要があることがよくあります。

// mongo collection
[
   {
      name:'my name',
      foos:[
         {
            foo:'one_foo',
            bar:'a_bar'
         },
         {
            foo:'two_foo',
            bar:'b_bar'
         }
      ]
   },
   {
      name:'another name',
      foos:[
         {
            foo:'another foo',
            bar:'a_bar'
         },
         {
            foo:'just another foo',
            bar:'c_bar'
         }
      ]
   }
]

// search (pseudo code)
{ foos: {$elemMatch: {bar: 'c_bar'}} }
// returns
{
      name:'another name',
      foos:[
         {
            foo:'another foo',
            bar:'a_bar'
         },
         {
            foo:'just another foo',
            bar:'c_bar'
         }
      ]
   }

これはmongoで効率的に行うことができますか?インデックスはどのように設定する必要がありますか? 私のユースケースでmongoがどのように機能するか、または最適化がどのように見えるかについてのアイデアだけです。

4

1 に答える 1

2

MongoDB には、埋め込みドキュメントにインデックスを作成する方法をドット表記で説明するドキュメントがあります。

ドット記法 (オブジェクトへのリーチ)

> db.blogposts.findOne()
{ title : "My First Post", author: "Jane",
  comments : [{ by: "Abe", text: "First" },
              { by : "Ada", text : "Good post" } ]
}
> db.blogposts.find( { "comments.by" : "Ada" } )

> db.blogposts.ensureIndex( { "comments.by" : 1 } );

パフォーマンス特性については...データセットでテストしてください。

于 2012-08-29T17:30:15.537 に答える