私は次のようにドキュメント内の2つの配列を返す集計を作成することができました:
"b": [
{
"_id": "6258bdfe983a2d31e1cc6a4b",
"booking_room_id": "619395ba18984a0016caae6e",
"checkIn_date_time": "2022-04-16",
"checkOut_date_time": "2022-05-17"
}
]
"r": [
{
"_id": "619395ba18984a0016caae6e",
}
]
の一致のr
場合からアイテムを削除したい。_id
r
booking_room_id
b
また、これらの配列は親ドキュメント内に存在するためです。r
フィルタの実行後に空の場合、クエリから親ドキュメントを削除したいと思います。
使用$expr
して$filter
db.collection.aggregate([
{
$match: {
$expr: {
$ne: [
{
$filter: {
input: "$r",
as: "r",
cond: {
$not: { $in: [ "$$r._id", "$b.booking_room_id" ] }
}
}
},
[]
]
}
}
},
{
$set: {
r: {
$filter: {
input: "$r",
as: "r",
cond: {
$not: { $in: [ "$$r._id", "$b.booking_room_id" ] }
}
}
}
}
}
])
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加