我有一个MongoDB集合users
,我想用动态密钥存储一个字典。我希望users
在MongoDB中看起来像这样:
{
"_id": {
"$oid": "5a9f5b3400e2f61a0c5f449b"
},
"profile": {
"votes": {
dynamicKey1Here: {
constantKey: 'value',
constantKey2: 'value2'
},
dynamicKey2Here: {
constantKey: 'value',
constantKey2: 'value2'
},
// more dynamic keys here...
}
}
但我不知道如何定义我的架构。到目前为止,我有:
const userSchema = new Schema({
profile: {
votes: {DynamicKeyEntry}
}
});
那么我如何定义DynamicKeyEntry
的架构?
const DynamicKeyEntry = new Schema(
// HOW DO I DEFINE DYNAMIC KEYS?
);
答案 0 :(得分:1)
因为您提到您使用的是猫鼬,所以您也可以使用 Map 或 Mixed 类型。 Map 类型允许您设置动态键并仍然为值强制执行某些模式:
votes: {
type: Schema.Types.Map,
of: new Schema(
{
constantKey: {
type: Schema.Types.String,
required: true,
}
}
)
...
混合类型为您提供完全控制权,但您希望在应用程序端正确验证数据,否则最终可能会一团糟。
votes: {
type: Schema.Types.Mixed,
}
答案 1 :(得分:0)
如果您可以使用@Valid @RequestParam(value = "checked", required = false) long[] checkboxvalues
,那么它可以更好地存储和提取数据,例如:
aray
现在,您可以在 votes: { type: Array }
中存储多个对象作为您的要求