Node.js 如何更新数组中的object元素以及数组中的object元素。猫鼬和野鸭

Node.js 如何更新数组中的object元素以及数组中的object元素。猫鼬和野鸭,node.js,arrays,mongodb,mongoose,Node.js,Arrays,Mongodb,Mongoose,我正在尝试更新数组中的对象和对象中的数组。我使用猫鼬,我有两个模式SlotTracker和Slot。我正在阵列中添加插槽。如下。 这是我的数据库 [{ “_id”:{ $oid:“60a39e210976153090842b46” }, “预订”:[ { “_id”:{ $oid:“60b8ac254006ed40604eac86” }, “aDate”:{ $date:“2021-06-12T00:00:00.197Z” }, “aShift”:“早上好”, “slotsavable”:3,

我正在尝试更新数组中的对象和对象中的数组。我使用猫鼬,我有两个模式SlotTracker和Slot。我正在阵列中添加插槽。如下。 这是我的数据库


[{
“_id”:{
$oid:“60a39e210976153090842b46”
},
“预订”:[
{
“_id”:{
$oid:“60b8ac254006ed40604eac86”
},
“aDate”:{
$date:“2021-06-12T00:00:00.197Z”
},
“aShift”:“早上好”,
“slotsavable”:3,
“slotsBooked”:0
},
{
“_id”:{
$oid:“60b8ac384006ed40604eac9d”
},
“aDate”:{
$date:“2021-06-14T00:00:00.197Z”
},
“aShift”:“早上好”,
“slotsavable”:3,
“slotsBooked”:0
}
],
“宫廷”:2,
“_v”:0
},
{
“_id”:{
$oid:“60b7a9199f7c244f3c9053c4”
},
“预订”:[
{
“_id”:{
$oid:“60b8ac604006ed40604eacb5”
},
“aDate”:{
$date:“2021-06-12T00:00:00.197Z”
},
“aShift”:“早上好”,
“slotsavable”:6,
“slotsBooked”:0
},
{
“_id”:{
$oid:“60b8ac6d4006ed40604eaccd”
},
“aDate”:{
$date:“2021-06-13T00:00:00.197Z”
},
“aShift”:“早上好”,
“slotsavable”:6,
“slotsBooked”:0
}
],
“宫廷”:3,
“_v”:0
}]
我正在尝试更改slotsBookedSlotsAvailable的值,如果它们存在于请求法院的booking数组中。若请求法院的数组中不存在该字段,则添加该法院的新插槽int数组

模式
  • SlotTracker:
模式({
宫廷女:{
类型:编号
},
预订:{
类型:数组
}
});
模式({
阿达特:{
类型:日期
},
阿希夫特:{
类型:字符串
},
插槽可用:{
类型:编号
},
预定的时间:{
类型:编号
}
});
我想改变slotAvailable和slotBooked当且仅当aDate和aShift与提供的aDate和aSlot匹配时


您可以使用此聚合框架技巧:


基本上是过滤数组,然后覆盖要更改或添加的属性。

我尝试过,但无法为此编写查询。谢谢