我有兩個系列:
users: [
{
name: 'John',
children: ["Mary"]
},
{
name: 'Mary',
children: []
}
]
tokens: [
{
name: "someToken",
owner: "John"
}
]
我想按令牌名稱搜索并按所有者和該用戶的所有孩子回傳用戶。例如:
if (query value is 'someToken') then add to results John data from collection
if ('John' has childs) then add to results him children
我的嘗試:
$專案
$管道
這些回傳所有用戶。不管什么是查詢值,
uj5u.com熱心網友回復:
您可以考慮從 開始聚合token。按您的查詢值執行 a $match,然后執行$lookup
db.tokens.aggregate([
{
$match: {
name: "someTokenName"
}
},
{
"$lookup": {
"from": "users",
"localField": "owner",
"foreignField": "name",
"as": "usersLookup"
}
},
{
$project: {
name: "$owner",
children: {
"$reduce": {
"input": "$usersLookup.children",
"initialValue": [],
"in": {
"$concatArrays": [
"$$value",
"$$this"
]
}
}
}
}
}
])
這是Mongo游樂場供您參考。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/470062.html
