Mongo:按ID数组对文档进行排序

inc*_*ate 11 sorting mongodb

假设您在其他地方存储了一系列文档ID(例如,在Redis排序集中).

查询Mongo文档的最有效方法是什么{ _id: { $in: ids }},并将结果排序为与ids数组中相同的顺序?

var ids = [3,2,1,6,7];

db.records.find({ _id: { $in: ids }})
 .sort({ 
   // ???
 });

// expecting [{_id: 3}, {_id: 2}, {_id: 1}, {_id: 6}, {_id: 7}]
Run Code Online (Sandbox Code Playgroud)

PS我知道我可以在应用程序中进行排序,但我想知道,如果可以在后端更高效地完成.

Par*_*ade 5

你现在不能在MongoDB中做到这一点.jira有一个未解决的问题.

SERVER-7528

  • 谢谢!我想,我现在会坚持使用 `docs.sortBy(function(doc) { return ids.indexOf(doc._id) })` 。 (2认同)