我正在使用NodeJS和MongoDB,
实际上,我对MongoDB中使用的数据结构有疑问,目前我将数据保存在数据库中,如下所示:
{
"_id" : ObjectId("4f9519d6684c8b1c9e72e367"),
"tipo" : "First Post on MongoDB",
"rates": {
"user": "5c981a0f8a76d426dc04619e",
"votation": 1
},
}
但是我要存储数据的方式是这种结构:
{
"_id" : ObjectId("4f9519d6684c8b1c9e72e367"),
"tipo" : "First Post on MongoDB",
"rates": {
"5c981a0f8a76d426dc04619e":{
"votation": 1
}
},
}
我一直在尝试像上一个示例一样保存数据,但是我没有实现,
这是将常量保存在NodeJS中的方式。
const post = {
tipo: body.tipo,
user: body.usuario,
duration: 25,
rates:
{
user: body.usuario,
votation: 1
}
};
这是我的模型:
interface IPost extends Document {
tipo: String;
user: Object;
duration: number;
rates: Object;
}
有人可以解释一下我该怎么做吗?
致谢。
答案 0 :(得分:0)
如果您需要存储与主文档相关的键/值属性,然后将其可视化,则可能需要mongoose maps。
地图的键始终是字符串。
rates: { type: Map, of: Number }
通过这种方式,您可以拥有以下内容:
rates: {"5c981a0f8a76d426dc04619e": 1}
使用此架构,您可以有多个费率,每个用户/密钥一个。
但是,如注释中所述,如果需要针对这些键/值进行查询,则这可能是次佳的解决方案。在这种情况下,应使用external schema reference。在这种情况下,我将使用三种架构方法:发布,用户和费率。
我发现一个similar question已经被要求。