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