Mongoose中的动态模式键

时间:2016-03-01 20:43:10

标签: node.js mongodb model mongoose schema

我有一个简单的要求,即在mongo中插入动态密钥及其值。

类似的东西:

[
  {"key1": "val1"},
  {"key2": "val2"}
]

为此,我创建了模式: 当我读到[Schema.Types.Mixed]时,它只会使指定值的数据类型动态化,而不是我的情况下的键。

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var myschema = new Schema({ key: [Schema.Types.Mixed] });

module.exports = mongoose.model('DataCollection', myschema);

任何人都可以指出,这是我失踪的原因。 这是我的输出,显示空白值。

提前致谢。

enter image description here

1 个答案:

答案 0 :(得分:1)

我不认为有可能真的有一个动态密钥,因为它会破坏模式的目的,但你可以这样做:

var KeyValueSchema = new Schema({
    key : String,
    value : String
});

module.exports = mongoose.model('KeyValueCollection', KeyValueSchema); 

或者使用Mixed数据类型,您可以存储整个JSON对象。例如,使用此架构:

var mySchema = new Schema({
     data : Schema.Types.Mixed
});

module.exports = mongoose.model('DataCollection', mySchema);

您可以插入:

.post(function(req, res) {
    var collection = new DataCollection();
    collection.data = {'key' : 'value'};
    collection.save(function(err) {
        if(err) res.send(err);
        res.json({message:'Data saved to collection.'});
    });
});