簡體   English   中英

如何使用mongodb構建數據?

[英]How do I structure my data with mongodb?

請告訴我這是否是解決我的問題的合適方法:

作為專營權的經理,您可以登錄。這里有您所有員工的清單。 左側顯示:

公司名

商店1

  • 第一節
  • 第二節

商店2

  • 第一節
  • 第二節

所以這是一個例子

鮑勃的雜貨店

芝加哥商店

  • 熟食店
  • 蔬菜
  • 查看

紐約專賣店

  • 面包店
  • 熟食店
  • 蔬菜
  • 查看

所以目前我的想法是擁有2個模型。 用戶模型和公司模型。 我使用的是第二個公司模型,因為如果商店名稱隨一個用戶更改,那么每個用戶都需要更改。 然后,我在用戶文檔中使用對該公司的參考。

var CompanySchema = new Schema({
    name: {
        type: String,
    },
    store: {
        type: Array
    },
 });

我將在“商店”屬性中包含這些部分,因為不同的商店具有不同的部分。

到目前為止,我認為一切都正確。 我的問題是如何將用戶分配到商店中的特定區域。 會是user.company.store [3] .section [1]嗎? 如果部分/存儲被刪除,部分/存儲的indexOf值是否不會改變? 人們通常如何去做這樣的事情? 我基本上是在創建與文件夾/文件目錄相同的東西。

我會這樣做:

架構:

var UserSchema = new Schema({
    name: { type: String },
    company: type: Schema.Types.ObjectId, ref: 'Company',
    stores: [{type: Schema.Types.ObjectId, ref: 'Store'}]
    sections: [{type: Schema.Types.ObjectId, ref: 'Sections'}]
})

var CompanySchema = new Schema({
    name: {
        type: String,
    },
    store:{type: Schema.Types.ObjectId, ref: 'Store'}
 });

var StoreSchema = new Schema({
    name: {
        type: String,
    },
    sections: [{type: Schema.Types.ObjectId, ref: 'Section'}]
 });

var SectionSchema = new Schema({
    name: {
        type: String,
    }
});

“ ref”鍵中的值是相應型號的名稱。 因此CompanySchema具有相應的Company模型。

關於實際存儲對象ID的好處是,您現在可以使用“填充”來獲取引用對象。

我將“段”直接存儲在UserSchema中,以簡化操作和直接訪問。

然后,我將在用戶架構中為數組建立索引,以使訪問速度更快。

您還必須編寫一些中間件,以確保刪除商店/部分,以確保也將它們從引用它們的任何用戶中刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM