【问题标题】:MongoDB Schema: Array with multiple fields?MongoDB Schema:具有多个字段的数组?
【发布时间】:2014-03-17 11:10:25
【问题描述】:

我正在尝试为用户创建一个架构来存储他们最喜欢的鞋子。现在,我有以下架构:

local: {
        email        : String,
        password     : String,
}

如何添加鞋子数组,以便当用户单击按钮时,数据库会将鞋子品牌和尺码添加到 User 对象中?就像这样:

favorite_shoes: { 品牌:xxxx 尺寸:xxxx,品牌:xxxxx 尺寸:xxxxxx}

为每个用户。我将如何做到这一点/架构会是什么样子?

【问题讨论】:

  • 只需在用户映射中插入favorite_shoesdb.users.update({usernam: "username"}, {$set: {favorite_shoes: ...}})mongodb 没有架构。
  • 但是我不需要在它初始化数据库的时候给它设置字段吗?我还需要这是一系列不同尺寸的品牌吗?
  • 一点也不,mongodb 是一个无模式的文档数据库,您可以插入任何结构的地图。 docs.mongodb.org/manual/core/introduction
  • 使其成为地图数组[{brand: xxx, size:123}, ...]
  • 所以更新后的模式应该是这样的: var userSchema = mongoose.Schema({ local : { email : String, password : String, } favorite_shoes : [{ name : String, size : Number, } ] });

标签: mongodb schema database


【解决方案1】:

您的架构将如下所示:

{
  usernam: String,
  email: String,
  password : String,
  favorite_shoes: [ { brand: String, size: Int}, {brand: String, size: Int} ]
}

您不必事先创建favorite_shoes 字段。它将在您第一次设置其值时创建。

如果您想避免鞋子在列表中重复,请使用$addToSet

db.users.update({usernam: "username"}, {$addToSet: {favorite_shoes: { brand: "Adidas", size: 12 } }});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-08
    相关资源
    最近更新 更多