MongoDB 使用 Async.js 与 $in 保持顺序 [重复]
Posted
技术标签:
【中文标题】MongoDB 使用 Async.js 与 $in 保持顺序 [重复]【英文标题】:MongoDB keep order with $in by using Async.js [duplicate] 【发布时间】:2017-03-14 22:13:36 【问题描述】:如你所知,$in: _id: []
不遵守秩序。
我想为此目的使用 Async.js。
例如
const ids = [3,1,2]; // Initial ids, I get it from aggregation
const documents = [_id:1, _id:2, _id: 3]; // That's I get from MongoDB
const result = [_id:3, _id: 1, _id: 2] // That's I need
如何使用 Async.js 执行此操作?我将mongoose.js
与mongoose-fill 一起使用,这不适用于aggregation
【问题讨论】:
收集所有结果然后只使用 JS sortBy 任何你喜欢的参数有什么问题? 我不太明白你的意思。就像我想的那样,我必须编写两个循环: var result = []; for(var i=0;i这里不需要异步。自然 javascript 排序将帮助您解决此问题。
要查询 mongodb,只需使用这样的查询
_id : $in: [1,2,3] ;
当你收到这样的结果时
const documents = [_id:1, _id:2, _id: 3];
现在你可以运行简单的排序
let result = documents.sort((a, b) => a._id < b._id);
console.log(result);
会按 id 降序排序。
[_id:3, _id: 2, _id: 1];
希望这会有所帮助。
【讨论】:
不,不,不.. 我想用 id 映射文档。帖子不正确的示例。我找到了解决方案this以上是关于MongoDB 使用 Async.js 与 $in 保持顺序 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
MongoDB 中的结果顺序与 $in 类似 MySQL field('_id', ...)
MongoDB 中的结果顺序与 $in 类似 MySQL field('_id', ...)