1
UserEventsInfo = new mongoose.Schema({
    name: String,
    username: String,
    event_movie:[String],
    event_tour:[String],
    event_restaurant:[String],
    event_lifetimeevents:[String]
},{strict : false});

我能够插入模式中未定义的新键值对

但是当我尝试读取该键的值时。我不能。我正在使用以下代码。

UserEventsDetails.find({username:username},function(err,docs){
  if(!docs.length)
  {
    res.send('datanotavailable');
      }
  else{
    res.send(docs[0][eventname]);
        }
  }); 

这里eventname是一个变量。当我在模式中添加该键时,它会返回值,即工作正常。否则它不会返回任何值。

4

1 回答 1

0

看起来像这样向猫鼬提交了一个问题。这里有回应:

我们在无模式数据库中看到的好处是,我们的数据模型能够按照我们的功能需要的速度快速发展,而不会对性能产生线性影响,也不会因不必要的迁移而降低部署周期。

如果你不想在保存之前对你的数据进行规范化和验证,那么你不需要像猫鼬这样的工具,你可以直接使用驱动程序。

经过一番挖掘,有一种方法可以做到这一点,但你需要有一个 type 的字段Schema.Types.Mixed。所以它看起来像这样:

var schema = new Schema({
    mixed: Schema.Types.Mixed,
});

var Thing = mongoose.model('Thing', schema);

var m = new Thing;
m.mixed = { any: { thing: 'i want' } };

m.save(callback);

要找到混合这个 SO问题的答案。

****编辑

忘记链接混合类型的文档

于 2016-03-01T19:20:28.430 回答