0

MySQL データベースから MongoDB に移行するには、製品カタログでこの機能を複製する必要があります。

  1. 各製品には複数のカテゴリがあります
  2. 各カテゴリには、各カテゴリ内の製品の名前、ID、および位置があります
  3. カテゴリ別に製品をクエリしたり、カテゴリの位置や価格やタグなどの他のフィールドで並べ替えたりするときのパフォーマンス

これは私が思いついたモデルの例です

{
   ...
   categories: [
       {
           name: 'Clothing',
           category_id: 1,
           position: 0
       },
       {
           name: 'Bottoms',
           category_id: 2,
           position: 2
       },
       {
           name: 'Jeans',
           category_id: 5,
           position: 0
       }
   ]
}

索引付けのために、name、category_id、および position を別の最上位フィールドに分ける必要がありますか?

4

1 に答える 1

2

提供されたドキュメントの例では、このカテゴリの位置による効率的なインデックス作成でカテゴリによる検索を実行することは不可能のようです

確かに、「位置」、「名前」をインデックスしてクエリを実行できます

db.coll.find({"categories.name": "Jeans"}).sort({"categories.position": -1})

しかし、それは目的のカテゴリによる適切な並べ替えではありません。

ドキュメント部分があることをお勧めします:

{
  ...
  "categories": ["Clothing", "Bottoms", "Jeans"],
  "positions": {
    "Clothing": 0,
    "Bottoms": 2,
    "Jeans": 0
  }
}

その後、クエリを実行できます

db.coll.find({categories: "Jeans"}).sort({"positions.Jeans": -1})
于 2013-09-24T23:06:08.703 に答える