MongoDB $lookup如何过滤非匹配文档?
解决MongoDB $lookup后过滤空匹配结果的问题
在你的聚合查询中添加一个$match阶段,即可过滤掉drawnticket为空数组的文档,只保留在lotterydrawing中有对应记录的彩票数据。
完整查询语句
db.lotteryticket.aggregate([ { $lookup: { from: "lotterydrawing", localField: "ticket", foreignField: "ticket", as: "drawnticket" } }, { $match: { "drawnticket": { $ne: [] } } } ])
可选过滤方式
也可以通过判断数组长度大于0来实现相同效果:
db.lotteryticket.aggregate([ { $lookup: { from: "lotterydrawing", localField: "ticket", foreignField: "ticket", as: "drawnticket" } }, { $match: { $expr: { $gt: [ { $size: "$drawnticket" }, 0 ] } } } ])
执行结果
[ { "_id": ObjectId("6021ce0cb4d2c2b4f24c3a33"), "ticket": "T3", "player": "Charles", "drawnticket": [ { "_id": ObjectId("63309480b749b733c087b758"), "ticket": "T3" } ] } ]
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

