什么是MongoDB聚合,相当于数组上的Mongoose的.populate?具体来说,我想知道是否会有这样的情况:( a)执行$lookup的功能,但( b)仍然对返回的对象保持数组顺序。
也就是说,在[ ObjectId(b), ObjectId(a), ObjectId(c) ]中查找项应该以相同的[ ItemB, ItemA, ItemC ]顺序返回数组,而不是 [ItemA, ItemB, ItemC]或任何其他排列。
发布于 2022-08-01 08:39:28
一种选择是使用常规的$lookup,然后排序结果:
db.colA.aggregate([
{$lookup: {
from: "colB",
localField: "data",
foreignField: "_id",
as: "newData"
}},
{$set: {
newData: "$$REMOVE",
data: {
$map: {
input: "$data",
in: {$arrayElemAt: ["$newData", {$indexOfArray: ["$newData._id", "$$this"]}]}
}
}
}
}
])看看它如何在操场实例上工作
https://stackoverflow.com/questions/73189324
复制相似问题