我有一组productIds
和一个Product
集合。我想查询产品集合
对于productIds数组中的所有产品,但我希望结果与的顺序相同
查询数组。 productsIds使用其他参数排序
可在产品系列的文档中找到,因此我不能对产品集合使用排序。
有没有办法保留订单?
例如:
productIds: [362,128,4783,1,44]
db.collection('products'). find({id:{$in:productIds}}).toArray()
之后
我希望文档的顺序与productIds的顺序相同
目前我的订单不同。
答案 0 :(得分:0)
您有两个简单的选择:
1)在内存中排序
const productIds = [362,128,4783,1,44];
const idAscending = (a, b) => productIds.indexOf(a.id) > productIds.indexOf(b.id);
db.collection('products').find({ id:{ $in:productIds } }).toArray()
.then(products => products.sort(idAscending));
2)进行单独查询
const Promise = require('bluebird');
const productIds = [362,128,4783,1,44];
Promise.map(productIds, db.collection('products').findOne);