我在資料庫中有以下檔案:(每個檔案都是一個有成員的房間)
[
{
"id": "room1",
"members": [{
"id": "member1",
"acks": "XXX",
},{
"id": "member2",
"acks": "XXX",
},{
"id": "member3",
"acks": "XXX",
},{
"id": "member4",
"acks": "XXX",
}]
},
{
"id": "room2",
"members": [{
"id": "memberA",
"acks": "XXX",
},{
"id": "memberB",
"acks": "XXX",
},{
"id": "memberC",
"acks": "XXX",
},{
"id": "memberD",
"acks": "XXX",
},{
"id": "memberE",
"acks": "XXX",
},{
"id": "memberF",
"acks": "XXX",
}]
},
{
"id": "room3",
"members": [{
"id": "memberX",
"acks": "XXX",
},{
"id": "memberY",
"acks": "XXX",
},{
"id": "memberZ",
"acks": "XXX",
}]
}
]
從前端發送下一個資料:
[{
"id": "room1"
"members": ["member1", "member2"]
},{
"id": "room2"
"members": ["memberA", "memberB", "memberC", "memberF"]
},{
"id": "room3"
"members": ["memberX", "memberY"]
}]
我想檢查每個房間的所有成員是否都匹配并回傳一個唯一的布林值作為回應 --> 如果全部匹配則回傳 True,如果有人不匹配則回傳 False。
此資料應回傳 false:
[{
"id": "room1"
"members": ["memberA", "member2"] //Because memberA is not in room1
},{
"id": "room2"
"members": ["memberA", "memberB", "memberC", "memberF"]
},{
"id": "room3"
"members": ["memberX", "memberY"]
}]
操場
是否可以通過一個查詢來實作?
非常感謝您提前。
uj5u.com熱心網友回復:
你可以試試查詢,
- 從前端請求準備查詢請求
// consider this is your request parameter
let request = [{
"id": "room1",
"members": ["member1", "member2"]
},{
"id": "room2",
"members": ["memberA", "memberB", "memberC", "memberF"]
},{
"id": "room3",
"members": ["memberX", "memberY"]
}];
// prepare query
let query = request.map((r) => {
return {
id: r.id,
members: r.members.map((m) => {
return { "members.id": m }
})
}
});
console.log(query)
- 嘗試
countDocuments函式并根據請求獲取房間總數
async function hasRooms (query) {
let count = await Schema.countDocuments({ $or: query });
return (count === request.length);
}
操場
- 使用你的函式
console.log(await hasRooms(query));
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/399228.html
