簡體   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