使用猫鼬,我不相信有办法做到你所描述的。为了解释一下,我们举一个例子,其中键是日期,值是高温,形成像 { "2012-05-31" : 88 } 这样的对。
让我们看看您提议的结构:
{
// meta information
subdocs: {
"2012-05-30" : 80,
"2012-05-31" : 88,
...
"2012-06-15": 94,
}
}
因为您必须在 Mongoose 中预先定义架构,所以您必须提前知道您的键名称。在这个用例中,我们可能不会提前知道我们将收集哪些日期的数据,因此这不是一个好的选择。
如果你不使用 Mongoose,你可以毫无问题地做到这一点。 MongoDB 本身擅长将具有新键名称的值插入到现有文档中:
> db.coll.insert({ type : "temperatures", subdocuments : {} })
> db.coll.update( { type : "temperatures" }, { $set : { 'subdocuments.2012-05-30' : 80 } } )
> db.coll.update( { type : "temperatures" }, { $set : { 'subdocuments.2012-05-31' : 88 } } )
{
"_id" : ObjectId("5238c3ca8686cd9f0acda0cd"),
"subdocuments" : {
"2012-05-30" : 80,
"2012-05-31" : 88
},
"type" : "temperatures"
}
在这种情况下,在 MongoDB 之上添加 Mongoose 会剥夺 MongoDB 的一些原生灵活性。如果您的用例非常适合 MongoDB 的此功能,那么使用 Mongoose 可能不是最佳选择。