使用Mongoose创建字典模式

时间:2014-07-30 07:01:51

标签: javascript node.js mongodb mongoose

我正在尝试使用Mongoose存储对象字典。意识到我使用Mixed类型丢失了保存更改检测,我希望我可以创建一个不需要Mixed类型的模式。

有很多例子可以为对象数组创建模式,但不能创建对象的字典。有可能这样做吗?

格式:

{
    ObjectId : {
        "attempts" : {
            "response" : String,
            "timestamp" : Date
        },
        "complete" : Boolean
    }
}

3 个答案:

答案 0 :(得分:10)

mongoose中不支持字典。字段名称在架构中不能是动态的。您应该使用原始对象(嵌入式文档)并将其实现为字典。但是,只要您更改了该字段,就无法通过mongoose进行验证并使用markModified进行保存

var fooSchema=mongoose.Schema({name:String, dic:{}});
//dic is your dictionary

答案 1 :(得分:0)

您可以使用 meta 作为字典来使用这样的词典:

var UserSchema = new Schema({
  meta: {
    votes: Number,
    favs:  Number
  }
  first_name:  String,
  last_name: String,
  profile_pic:   String,
  gender: String,
  timezone: Number
  date: { type: Date, default: Date.now },
  updated: { type: Date, default: Date.now },
  country: {id: Number, name: String}


});

答案 2 :(得分:0)

更新:从5.1猫鼬开始,地图类型为:https://mongoosejs.com/docs/schematypes.html#maps

相关问题