gpt4 book ai didi

mongodb - Mongoose :保存为子文档的关联数组与子文档数组

转载 作者:可可西里 更新时间:2023-11-01 09:11:34 24 4
gpt4 key购买 nike

我有一组文档需要保持持久性。由于 MongoDB 处理多文档操作的方式,我需要将这组文档嵌入到一个容器文档中,以确保我的操作的原子性。

数据非常适合键值对。有没有办法代替这样做:

var container = new mongoose.Schema({
// meta information here
subdocs: [{key: String, value: String}]
})

我可以让 subdocs 成为应用子文档验证的关联数组(即对象)吗?所以容器实例看起来像:

{
// meta information
subdocs: {
<key1>: <value1>,
<key2>: <value2>,
...
<keyN>: <valueN>,
}
}

谢谢

最佳答案

使用 Mongoose ,我不相信有办法做你所描述的事情。为了解释,让我们举一个例子,你的键是日期,值是高温,形成像 { "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 的一些 native 灵 active 。如果您的用例非常适合 MongoDB 的此功能,那么使用 Mongoose 可能不是最佳选择。

关于mongodb - Mongoose :保存为子文档的关联数组与子文档数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18832950/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com