我是 MongoDB 聚合的新手。我沒有得到想要的輸出我從聚合中得到的輸出:-
[
{tweet:{key:value}},
{tweet:{key:value}},
{tweet:{key:value}},
{tweet:{key:value}},
]
但我想要管道的以下輸出: -
[
{key:value},
{key:value},
{key:value},
]
最后,我正在運行的管道:-
const pipeline = [[
{
$match: {
$expr: {
$in: [
Mongoose.Types.ObjectId(userid), '$likedBy.user'
]
}
}
}, {
$lookup: {
from: 'tweets',
localField: 'tweet',
foreignField: '_id',
as: 'tweet'
}
}, {
$unwind: {
path: '$tweet'
}
}, {
$lookup: {
from: 'users',
localField: 'tweet.user',
foreignField: '_id',
as: 'user'
}
}, {
$unwind: {
path: '$user'
}
}, {
$addFields: {
'tweet.user': '$user'
}
},
{
$addFields: {
'tweet.isLiked': true,
}
},{
$project:{
tweet:1,
}
},
]
];
const likedTweets = await TweetLike.aggregate(pipeline)
我知道我可以用 javascript 做到這一點,但我想用管道做到這一點
uj5u.com熱心網友回復:
您可以將最后一個專案階段替換為以下內容以實作您的需要:
{$project:{key:"$tweet.key"}}
uj5u.com熱心網友回復:
回答我自己的問題
我想回傳子檔案,所以我找到了這個https://stackoverflow.com/a/43411988/12332711
我所要做的就是使用
{
$replaceRoot: {newRoot: "$tweet"}
}
它對我有用
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/450019.html
標籤:javascript 节点.js mongodb 猫鼬
上一篇:使用陣列時的NodeJS性能
