【发布时间】:2019-08-21 12:51:54
【问题描述】:
我正在使用 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 的方式。
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;
}
谁能解释一下我该怎么做?
问候。
【问题讨论】:
-
但是这样做是一个非常糟糕的主意。变量键名在数据库中并不好。如果有的话,数据应该存储在
Array中。即:rates: [{ user: Schema.Types.ObjectId, votation: Number }],它会像这样存储:rates: [{ user: ObjectId("5c981a0f8a76d426dc04619e"), votation: 1 },{ "user": ObjectId("5ca01bc41a97dd8b468b3f54"), "votation": 2 }]。这对于查询来说更容易,因为索引匹配“值”而不是“键”,以及许多目的。数据库与客户端代码中的数组与对象的规则不同。 -
@NeilLunn ,谢谢你的建议,所以,现在我修改了我的代码,我的数据以这种方式存储:
"rates": [ { "user": "5ca01d2c56a2d9165c848f4f", "votation": 1 }, { "user": "5ca01d2c56a2d9165c821Df", "votation": 1 } ],这是保存此类信息的最佳方式吗?谢谢。