繁体   English   中英

Mongodb 排序 相同顺序 id 的聚合在过滤器上传递

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM