db.Products.aggregate([
{
$lookup: {
from: "Products_History",
localField: "_fid",
foreignField: "_fid",
as: "joins",
pipeline: [
{
"$sort": {
"date": -1
}
}
]
}
},
{
"$project": {
"_fid": 1,
"field1": 1,
"field2": 1,
"field3": 1,
"last_version": {
$first: "$joins.version"
}
}
},
{
$match: {
"last_version": {
$exists: true
}
}
}
])
当MongoDB为版本5或更高版本时,这一点非常有效。
然而,在我当前的版本中,我得到:“带有”pipeline“得$lookup不能指定”localField“或”foreignField“”
有没有一种方法可以在连接它们的同时修复查询?我不知道有没有其他方法可以做到这一点。
https://mongoplayground.net/p/SYsmjYjOdNJ
1条答案
按热度按时间xxhby3vn1#
您可以使用老式的“let and match”语法。在
$let
子句中,f
被设置为一个变量,以引用Products
文档中的_fid
字段。因此,查询将Products._fid
与Products_History._fid
(由$_fid引用)进行匹配。Mongo Playground