MongoDB- Monthly/Yearly 要为单个嵌入式文档嵌套的模式数据结构?
MongoDB- Monthly/Yearly schema data structure to nested for single embedded doc?
使用 MongoDb 和 Mongoose,
我想创建一个跟踪房间温度的网络应用程序。可以在一天中的任何时间输入温度……例如,每小时一次(我可以限制前端的数组增长)。我将拥有图表,用户可以在其中按天、周、月或年显示……因此,明智地,这些将是查询。
使用 MongoDb,我有这个架构:
var weeklySchema = new Schema({
_user: { type: Number, ref: 'User' },
_id: ObjectId(),
room: String,
updated_at: Date,
sun: [ { _id: ObjectId(), value: Number } ], //ObjectId() would be the time stamp of value
mon: [ { _id: ObjectId(), value: Number } ],
tues: [ { _id: ObjectId(), value: Number } ],
wed: [ { _id: ObjectId(), value: Number } ],
thur: [ { _id: ObjectId(), value: Number } ],
fri: [ { _id: ObjectId(), value: Number } ],
sat: [ { _id: ObjectId(), value: Number } ]
});
我想利用 MongoDb 嵌入式文档并将更多信息放在单个文档中,所以我想用 monthlySchema 代替。但是如果数据结构变成嵌套或树状结构,我会读到 MongoDb 不 query/read/write 的地方。
如果我每个月甚至每年做一个文档,数据结构是否会变得如此嵌套,以至于我会失去 performance/optimization 单个嵌入式文档的好处?如果没有,我怎么能像上面那样构建月度或年度?
将架构设计为 Date Aggregation Operations
。
var dailySchema = new Schema({
_user: { type: Number, ref: 'User' },
_id: ObjectId(),
room: String,
updated_at: Date,
});
var Daily = mongoose.model('Daily', dailySchema);
然后就可以操作update_at
到
Daily.aggregate({ $project: { day: { $dayOfMonth: "$updated_at" } } });
还可以检索每周、每月和每年的数据。这是一个讨论 here
使用 MongoDb 和 Mongoose,
我想创建一个跟踪房间温度的网络应用程序。可以在一天中的任何时间输入温度……例如,每小时一次(我可以限制前端的数组增长)。我将拥有图表,用户可以在其中按天、周、月或年显示……因此,明智地,这些将是查询。
使用 MongoDb,我有这个架构:
var weeklySchema = new Schema({
_user: { type: Number, ref: 'User' },
_id: ObjectId(),
room: String,
updated_at: Date,
sun: [ { _id: ObjectId(), value: Number } ], //ObjectId() would be the time stamp of value
mon: [ { _id: ObjectId(), value: Number } ],
tues: [ { _id: ObjectId(), value: Number } ],
wed: [ { _id: ObjectId(), value: Number } ],
thur: [ { _id: ObjectId(), value: Number } ],
fri: [ { _id: ObjectId(), value: Number } ],
sat: [ { _id: ObjectId(), value: Number } ]
});
我想利用 MongoDb 嵌入式文档并将更多信息放在单个文档中,所以我想用 monthlySchema 代替。但是如果数据结构变成嵌套或树状结构,我会读到 MongoDb 不 query/read/write 的地方。
如果我每个月甚至每年做一个文档,数据结构是否会变得如此嵌套,以至于我会失去 performance/optimization 单个嵌入式文档的好处?如果没有,我怎么能像上面那样构建月度或年度?
将架构设计为 Date Aggregation Operations
。
var dailySchema = new Schema({
_user: { type: Number, ref: 'User' },
_id: ObjectId(),
room: String,
updated_at: Date,
});
var Daily = mongoose.model('Daily', dailySchema);
然后就可以操作update_at
到
Daily.aggregate({ $project: { day: { $dayOfMonth: "$updated_at" } } });
还可以检索每周、每月和每年的数据。这是一个讨论 here