gpt4 book ai didi

mongoose - 如何在模式中构建 Mongoose 模式?

转载 作者:行者123 更新时间:2023-12-05 00:19:14 27 4
gpt4 key购买 nike

我是 mongodb 的新手,我有一个这样的数据模型

{
last_updated: Date.now(),
csgo_items:[
{name: 'name', price: 1},
{name: 'name', price: 1},
{name: 'name', price: 1}
]
}

我有一个“last_updated”,然后是我存储的大量 csgo 项目。

我的问题是。我需要两个模式吗?一个用于外层的两个属性,一个用于我的 csgo 项目模型?

如果我这样做,我的模式会是什么样子?

我有这样的项目模式。
var ItemSchema = new Schema({
price: Number,
name: String,
});

我是否还需要另一个架构来设置我的外部架构?
var CsgoSchema = new Schema({
last_updated: Date,
item: Array,
});

这样对吗?

最佳答案

由于您已将项目架构定义为

var ItemSchema = new Schema({
price: Number,
name: String
});

它具有父文档项数组的元素,您可以将父架构定义为
var CsgoSchema = new Schema({
last_updated: Date,
items: [ItemSchema]
});

当您想将项目添加到父文档数组时,您不必先单独保存每个项目,然后再将其添加到 Csgo模型,这是在保存顶级父文档时完成的,例如
var Csgo = mongoose.model('Csgo', CsgoSchema);
var csgo = new Csgo({
last_updated: new Date(),
items: [
{name: 'name1', price: 1},
{name: 'name2', price: 2},
{name: 'name3', price: 3}
]
});

csgo.save(function (err) {
if (err) return handleError(err)
console.log('Success!');
});

您还可以使用 MongooseArray 方法,例如 push , unshift , addToSet 将项目添加到父文档。例如:
var Csgo = mongoose.model('Csgo', CsgoSchema);
var csgo = new Csgo;

// add an item using push
csgo.items.push({name: 'name4', price: 4});
var csgo_item = csgo.items[0];
console.log(csgo_item); // { _id: '56e2bc9f61fb33583128be07', name: 'name4', price: 4 }
csgo_item.isNew; // true

csgo.save(function (err) {
if (err) return handleError(err)
console.log('Success!');
});

您也可以使用 MongooseArrays 的 create 方法将项目添加到 csgo 文档中:。
var newcsgo = csgo.items.create({name: 'name', price: 1});

关于mongoose - 如何在模式中构建 Mongoose 模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36348369/

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