[英]Mongoose auto increment a subdocuments field in array
我正在將子文檔推送到一個數組:
const deliverySchema = new db.Schema({
deliveryId: Number,
amountDelivered: Number,
price: Number
})
const suppliersSchema = new db.Schema({
supplierName: String,
phone: Number,
deliveries: [deliverySchema]
})
const delivery = {
"amountDelivered": 123,
"price": 123
}
Suppliers.updateOne(
{ _id: supplierId },
{ $push: { deliveries: delivery } }
)
我怎樣才能讓該文檔中的deliveryId
字段在更新時自動遞增。 所以結果看起來像:
{
"supplierName": "Test supplier",
"phone": 12345678,
"deliveries": [
{
"deliveryId": 1, // Auto increment this field on update
"amountDelivered": 123,
"price": 123
},
{
"deliverId": 2,
"amountDelivered": 123,
"price": 1234
}
]
}
您可以使用聚合框架來做到這一點:
$concatArrays
- 將當前交付數組與新項目連接起來$size
- 獲取交付數組的當前大小$sum
-將 deliveries數組的當前大小與 1 相加並使用結果來設置deliveryIddb.collection.update({
"key": 1
},
[
{
"$set": {
"deliveries": {
"$concatArrays": [
"$deliveries",
[
{
"deliveryId": {
"$sum": [
1,
{
"$size": "$deliveries"
}
]
},
"amountDelivered": 123,
"price": 123
}
]
]
}
}
}
])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.