0

人々がアイテムを販売するために、mongoDB にカテゴリとサブカテゴリのリストをどのように保存するのか疑問に思っています。

これが私がやろうとしていた方法ですが、考えてみるとうまくいきません。

ここに理由があります

{"category":"Fashion",
"Sub-Categories":
[{
   "subcat_name":"Female Clothing",
    "Sub-categories":[{"subcat-name":"Dresses"},{"subcat-name":"Shirts"},{"subcat-name":"Business"}]
}]
}

ご覧のとおり、サブカテゴリには 2 つのレベルがあるため、更新が混乱する可能性があります。

ebayやgumtreeのようなmongoDBでカテゴリリストを作成する最良の方法を教えてください

4

2 に答える 2

0

リンクリストのように配列を作成することをお勧めします。親カテゴリの列が必要です。

親カテゴリの列は、(明らかに)親カテゴリのインデックスを指しています。私のポイントを取得できると思います。

これで、再帰を使用してこの情報を取得できます

これがサンプル配列です

index    name               parent
  1      fashion   
  2      female clothing      1
  3      dresses              2
  3      shirts               2

これにより、単純な構造で動的なカテゴリを作成できます

于 2012-06-20T08:04:24.240 に答える
0

定義コレクション (つまり、どのカテゴリとサブカテゴリが存在するかを説明するコレクション) は、次のように構成する必要があります。

db.categories {
_id: <Category ID, unique code or ObjectId>,
name : <Human readable category name>,
subCategories : [
    {
        subCategoryCode : <Sub category ID, local unique code>,
        name : <Human readable sub category name>,
        <additional sub category data>
    }
],
<additional category data>
}

そしてあなたのアイテム:

db.items {

_id : <Item id>
name : <Human readable item name>
category : {
    categoryId : <Category ID>,
    categoryName : <Human readable category name>,
    subCategoryId : <Sub category ID>,
    subCategoryName : <Human readable sub category name>,
},
<additional item data>
}

このスキーマをすべての一般的なユース ケースで実行すると、1 つの一般的な操作で両方のコレクションをクエリする必要がある状況はほとんどないことがわかります。データの重複は意図的なものであり、管理する必要があります (つまり、カテゴリ名を更新する場合、特定のカテゴリのアイテムを一括更新する必要があります)。パフォーマンスや実用性の理由でそれを受け入れることができない場合は、名前のみを保存し、アプリケーションでアプリのローカル ID-> 名前キャッシュを維持して、データベースにクエリを実行せずにカテゴリの検索を容易にすることができます。

質問?コメント

于 2012-06-20T08:12:18.627 に答える