首先這是我的Workspaces收藏
[
{
"WorkspaceId": "er890we8rw98ro9we8rjower",
"WorkspaceTitle": "My First Workspace",
"WorkspaceOwner": "user1",
"Pages": [
{
"PageId": "a1sd32as7d841a23sd",
"PageMembers": [
{
"MemberId": "user1",
"MemberName": "John",
"MemberAvatar": "https://example.com/jKLa29Wqy",
"MemberAccess": "can edit"
},
{
"MemberId": "user2",
"MemberName": "Margot",
"MemberAvatar": "https://example.com/wKKLSAqy",
"MemberAccess": "can edit"
},
{
"MemberId": "user3",
"MemberName": "Silvia",
"MemberAvatar": "https://example.com/wKKLSAqy",
"MemberAccess": "can edit"
},
...
]
}
]
}
]
我想從檔案中列印特定的嵌套物件。我需要像這樣在我的收藏中獲取一個特定的檔案。
{
"WorkspaceId": "er890we8rw98ro9we8rjower",
"WorkspaceTitle": "My First Workspace",
"WorkspaceOwner": "user1",
"Pages": [
{
"PageId": "a1sd32as7d841a23sd",
"PageMembers": [
{
"MemberId": "user1",
"MemberName": "John",
"MemberAvatar": "https://example.com/jKLa29Wqy",
"MemberAccess": "can edit"
}
]
}
]
}
但是當我運行這個腳本時,我的 api 會列印出所有的集合。我怎樣才能做到這一點?
以下是我正在使用的查詢:
db.findOne({ $or: [{ "WorkspaceOwner": member_id }, { "Pages.PageMembers.MemberId": member_id }] }, function (err, result) {
res.status(200).json(result);
});
uj5u.com熱心網友回復:
您可以通過使用展開和過濾聚合來實作。
db.collection.aggregate([
{
"$unwind": "$Pages"
},
{
$addFields: {
"Pages.PageMembers": {
$filter: {
input: "$Pages.PageMembers",
as: "temp",
cond: {
$in: [
"$$temp.MemberId",
[
"user1"
]
]
}
}
}
}
}
])
操場
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/526573.html
下一篇:MongoDB:投票的聚合/分組
