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