我目前正在使用node.js express构建REST-Api,但不知道如何更新/添加scores Array中的元素。
下面是我的MongoDB集合中的一个文档(应该是这样的):
我的 Mongoose 模型:
const challengesSchema = new mongoose.Schema({
createdBy:{
type:String,
required: true
},
mapType:{
type:String,
required: true
},
time:{
type:Number,
required: true
},
numberOfMaps:{
type:String,
required: true
},
maps:{
type:Array,
required: true
},
pin:{
type: String,
required: true
},
takenBy:{
type: Array,
required: false
}
})
基本上,我收到一个id,我可以用它来做Challenges.findById({challenge._id})
。我想出了如何向takenBy Array
添加一个对象,如下所示:
Challenges.findOneAndUpdate(
{ _id: challenge._id },
{
$push: {
takenBy: user
}
}
);
如何将一个元素(score,如“20”)添加到数组'takenBy'中的scores数组中?
3条答案
按热度按时间gz5pxeao1#
您可以像这样使用filtered positional operator $一次推送score并计算新的TotalScore。
测试:
让我们有这个现有的文件:
如果我们想给id1增加一个50的分数,我们发送一个PUT请求(http://..../challenges/5e08fe4c0bc1b932e8726a0f/id1),其主体如下:
结果会是这样的:
如您所见,分数已添加到相关项目数组中,并且其TotalScore也增加了50,TotalScore为150
v7pvogib2#
您可以先撷取对象:
当然,如果您愿意,也可以使用解构!
r6vfmomb3#
...如何更新/添加元素到scores Array。
我会先检索该数组......推送新值,然后更新。
类似于: