如何使用mongodb(mongoose schema)创建Schema?

时间:2015-12-22 04:10:30

标签: node.js mongodb mongoose mongoose-schema

我有手机列表,包含型号和费率。我想为此创建一个架构。我是mongodb和mongoose的新手。任何人帮助我,我已经添加了我的要求。

Categories :

nokia

sub Categories :Nokia Lumia 730 -7,000,
                Nokia 225 -5,000,
                Nokia Lumia 1020 -6,000,
                Nokia Lumia 530 -8,0000

Samsung Galaxy A7:
                Samsung Galaxy A7 -10,000,
                Samsung Galaxy A3 -12,000,
                Samsung Galaxy One5 -5,000,
                Samsung Galaxy S5 Neo -6,000


HTC One M9s:

                HTC One M9s -9,000,
                HTC Desire 728G -12,000,
                HTC Desire 526 -4,000,

我的期望: 如何设计模式来解决以下条件

  1. 当我搜索诺基亚时,它应该显示带有费率的诺基亚移动模型。
  2. 当我使用诺基亚Lumia搜索诺基亚时,结果应显示匹配条件
  3. 这是我的完整架构

    var ShopSchema = new Schema({
    
        Email: {
            type: String,
            default: '',
            trim: true,
    
        },
        Storename: {
            type: String,
            default: '',
            trim: true
        },
        Type: {
            type: String,
            default: '',
            trim: true
        },
        Categories: {
            type: String,
            default: '',
            trim: true
        }
    
    
    });
    

1 个答案:

答案 0 :(得分:0)

您可以为商店和类别制作两个不同的收藏品

以嵌套方式制作架构

{
    "_id" : ObjectId("567a8f004cb6178545bac89c"),
    "Email" : "dineshaws@hotmail.com",
    "Storename" : "Dineshaws",
    "Type" : "XYZ",
    "Categories" : []
}

要了解mongoose中的嵌套架构,您可以访问此link

我举一个例子来了解更多 -

我们要保存商店名称的所有拳头

{
    "_id" : ObjectId("567a8f004cb6178545bac89c"),
    "Email" : "dineshaws@hotmail.com",
    "Storename" : "Dineshaws",
    "Type" : "XYZ",
    "Categories" : [
            {
                "_id" : ObjectId("567a9be04cb6178545bac89d"),
                "name" : "nokia",
                "subcategories" : []
            }
                   ]
}

当我们保存单个类别时,它将进入两个集合类别并存储

店铺收藏 -

{
    "_id" : ObjectId("567a9be04cb6178545bac89d"),
    "name" : "nokia",
    "subcategories" : []
}

类别集合 -

{
    "_id" : ObjectId("567a9be04cb6178545bac89d"),
    "name" : "nokia",
    "subcategories" : [
            {
                "name" : "Nokia Lumia",
                "model":"Nokia Lumia 730 -7,000"
            }
            ]
}

现在,如果我们要插入子类别,那么它将作为子文档进入两个集合

类别集合将如下所示 -

{
    "_id" : ObjectId("567a8f004cb6178545bac89c"),
    "Email" : "dineshaws@hotmail.com",
    "Storename" : "Dineshaws",
    "Type" : "XYZ",
    "Categories" : [
            {
                "_id" : ObjectId("567a9be04cb6178545bac89d"),
                "name" : "nokia",
                "subcategories" : [{
                            "name" : "Nokia Lumia",
                            "model":"Nokia Lumia 730 -7,000"
                        }
                        ]
            }
                   ]
}

商店收藏将如下所示 -

{{1}}

您还可以根据需要更改架构

由于