簡體   English   中英

更新mongo文檔數組中單個子文檔的計數

[英]Updating count of individual sub document that's in an array of a mongo document

因此,現在的示例針對User表。我嵌入了一個UserWeapon文檔,該文檔包含用戶擁有的所有武器以及使用該武器殺死的人數的數組。 我想編寫一個查詢,當給定用戶ID,武器ID和新命令時,它將相應地更新子文檔。

所以像

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 } })

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM