javascript - 根据数组索引对查询结果进行排序

标签 javascript arrays mongodb sorting underscore.js

我有来自anotherCollection的id数组..在我做了很多计算之后,我得到了:

idSortByRank = ["cxwMoC3k6kpf4mr5o","HFYjC5nuT9hKhdyFC","GiM7NCLjck6Pet8Wm"]

我需要从 MyCollection 的 mongodb 集合中返回按 idSortByRank 排序/索引的对象,如下所示:

//expected result should index/sort the same as idSortByRank

[
{"_id": "cxwMoC3k6kpf4mr5o", other field},
{"_id": "HFYjC5nuT9hKhdyFC", other field},
{"_id": "GiM7NCLjck6Pet8Wm", other field}
]

我这样做了,但没有按预期排序:

MyCollection.find({_id:{$in:idSortByRank}});

我的 MyCollection 中没有 rank 字段

非常感谢您...

最佳答案

您可以使用给定数组的索引idSortByRank进行排序。

var idSortByRank = ["cxwMoC3k6kpf4mr5o", "HFYjC5nuT9hKhdyFC", "GiM7NCLjck6Pet8Wm"],
    data = [{ "_id": "GiM7NCLjck6Pet8Wm" }, { "_id": "HFYjC5nuT9hKhdyFC" }, { "_id": "cxwMoC3k6kpf4mr5o" }];

data.sort(function (a, b) {
    return idSortByRank.indexOf(a._id) - idSortByRank.indexOf(b._id);
});
document.write('<pre>' + JSON.stringify(data, 0, 4) + '</pre>');

关于javascript - 根据数组索引对查询结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34221855/

相关文章:

Javascript 事件类仅应用于第一个列表项

javascript - 只是无法获取发送电子邮件的表格

javascript - 从对象将值设置为变量后无法获取值

javascript - 渲染到 EJS 时,数组变量丢失结构/括号

javascript - 更改图像 onLoad() - 我的失败在哪里?

javascript - Three.js 使用 raycaster.intersectObject 选择 Object3D 的子级

php - 无法将数组从 Php/MySQL 查询传递到 SwiftMailer

mongodb - Meteor 无法连接到 MongoDB

javascript - Promise 内 bcrypt 的 Promise {<pending>}

mongodb备份角色——mongodump