gpt4 book ai didi

javascript - 更新 mongo 文档数组中单个子文档的计数

转载 作者:搜寻专家 更新时间:2023-10-30 22:24:37 25 4
gpt4 key购买 nike

所以现在的示例是针对 User 表的。我嵌入了一个 UserWeapon 文档,它是用户拥有的所有武器的数组以及他们使用该武器击杀的次数。我想编写一个查询,当给定 userId、weaponId 和新击杀时,它会相应地更新子文档。

有点像

const user = await User.findById(userId);
const userWeapon = await user.userWeapon.findById(weaponId);
userWeapon.kills = userWeapon.kills + newAmmountOfKills
user.save();

执行此操作的最有效方法是什么?

模式:

const UserWeaponSchema = new Schema({
weapon: { type: Schema.Types.ObjectId, ref: 'Weapon' },
user: { type: Schema.Types.ObjectId, ref: 'User' },
kills: {
type: Number,
required: true,
unique: false,
},
deaths: {
type: Number,
required: true,
unique: false
},
equippedSkin: {
type: Schema.Types.ObjectId, ref: 'WeaponSkin',
required: false,
},
ownedWeaponSkins: [{ type: Schema.Types.ObjectId, ref: 'WeaponSkin'}]
});

const UserSchema = new Schema({
username: {
type: String,
required: true,
unique: true,
},
password: {
type: String,
required: true,
},
weapons: [{
type: Schema.Types.ObjectId, ref: 'UserWeapon'
}],
});

最佳答案

您可以使用 $inc运算符并运行更新操作,类似于:

UserWeaponSchema.update({ weapon: weaponId, user: userId }, { '$inc': { 'kills': newAmmountOfKills } })

关于javascript - 更新 mongo 文档数组中单个子文档的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55106875/

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