gpt4 book ai didi

node.js - 使用 ObjectId 键和字符串数组定义映射作为 mongoose 模式中的值

转载 作者:太空宇宙 更新时间:2023-11-04 02:23:05 25 4
gpt4 key购买 nike

我在为数据库创建 Mongoose 架构时遇到问题。我想创建一个以 objectId 作为键、以字符串值数组作为值的映射。我能得到的最接近的是:

var schema = new Schema({
map: [{myId: {type:mongoose.Schema.Types.ObjectId, ref: 'MyOtherCollection'}, values: [String]}]
});

但不知怎的,这对我不起作用。当我使用 {upsert: true} 执行更新时,它没有正确填充 map 中的 key: value。事实上,我什至不确定我是否正确声明了架构。

谁能告诉我架构是否正确?另外,如何使用 {upsert: true} 对此架构执行更新?

此外,如果上述不正确并且无法实现,那么我如何通过其他方式来模拟我的需求。我的用例是我想保留给定 objectId 的值列表。我不希望任何具有相同键的重复条目,这就是选择 map 的原因。

请建议该方法是否正确,或者是否应该以其他方式建模?

更新:

基于@phillee和this的回答,我只是想知道我们可以修改上述 thread 的接受答案中提到的模式吗?像这样:

{
"_id" : ObjectId("4f9519d6684c8b1c9e72e367"),
... // other fields
"myId" : {
"4f9519d6684c8b1c9e73e367" : ["a","b","c"],
"4f9519d6684c8b1c9e73e369" : ["a","b"]
}
}

架构将类似于:

var schema = new Schema({
myId: {String: [String]}
});

如果是,我如何相应地更改我的 { upsert:true } 条件?另外,就复杂性而言,与线程中提到的原始模式相比,它会更简单/复杂吗?

最佳答案

我建议更改架构,以便每个 myId 有一个条目,

var schema = new Schema({
myId : {type:mongoose.Schema.Types.ObjectId, ref: 'MyOtherCollection'},
values : [String]
})

如果您想更新/更新插入值,

Model.update({ myId : myId }, { $set : { values : newValues } }, { upsert : true })

关于node.js - 使用 ObjectId 键和字符串数组定义映射作为 mongoose 模式中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32038606/

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