[英]Mongodb sort Aggregation in same order ids was passed on filter
我想知道是否可以保持结果的当前顺序与在过滤中传递的顺序相同。
假设我们有一个 IDS 数组:
var arrayValues = [1,3,2]
我想聚合这些值,但保持结果与传递上述数组的顺序相同。
var result = Item.aggregate([{ $match: { _id: { $in: arrayValues } }}])
我希望结果与作为_id
值传入的数组值的顺序相同。
示例结果:
result = [{ _id: 1 },{ _id: 3 },{ _id: 2 }]
您可以为此使用indexOfArray
:
db.collection.aggregate([
{$match: {_id: {$in: arrayValues}}},
{$set: {index: {$indexOfArray: [arrayValues, "$_id"]}}},
{$sort: {index: 1}},
{$unset: "index"}
])
看看它在操场上的例子是如何工作的
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.