javascript - MongoDB: přidat nebo aktualizovat položky s vnořeným polem
Mám dokument s následujícími údaji:
Chest: {
ChestID: 400, // Chest ID is unique
Items: [{
ItemID: 200, //Item ID unique too
ItemIndexes: ['aaa10', 'bbb20'] // indexes should not be repeated
}]
}
Snažil jsem se to udělat, ale nemohu najít způsob, jak to funguje:
public async appendItems(chestId: number, items: Array < ChestItem > ) {
const tokensIds = items.map(item => item.tokenId)
// bidimensional array [][]
const tokenIndexes = items.map(item => item.indexesAsArray)
await this.raw.updateOne({
ChestID: chestId
}, {
$push: {
"Items.$[item].token_indexes": {
// in that bidimensional array there can be repeated indexes
$each: tokenIndexes,
position: "$"
}
}
}, {
arrayFilters: [{
"item.token_id": {
$in: tokensIds
}
}],
})
}
Takže chci udělat následující:
Nejprve musím najít ID truhly, pak musím najít ID položek, pak pokud ID položky existuje, jen přidám nové indexy (nemůže být více než 1 opakující se index), pokud ne, přidám položku.