我有这个集合,它们中的对象看起来像:
{
name: 'Apple',listOrder: {
default: 1,wallmart: 1
}
color: 'Red'
},{
name: 'Orange',listOrder: {
default: 2,wallmart: 3
}
color: 'Orange'
},{
name: 'lemon',listOrder: {
default: 3,wallmart: 2
}
color: 'Yellow'
}
我有3个水果摊,需要按正确的顺序找回它们。 我尝试了几种不同的方法来做到这一点,并且我觉得自己在正确的方向上开展工作:
function getFruit(storeName){
var override = {check:{},sort:{}}
override.check[`listOrder.${store}`] = {$exists:1}
override.sort[`order.${store}`] = 1
var sort = {sort:{$cond:{if:override.check,then:override.sort,else:{'listOrder.default':1}}}}
return FruitsCollection.find({},sort).fetch()
}
它告诉我$ cond不是受支持的排序键。我想知道三件事:
- 在客户端上对它们进行排序是否会得到更好的优化?我正努力保持移动性,因此,进行这样的排序会使页面需要花费几秒钟的时间来加载,因为我不仅仅拥有这3种水果。
- 是否可以使用更好的排序查询?我对Mongo有点陌生。
- 这只是个坏主意吗?
当前正在客户端上使用它,我可以将其移到服务器上,但是它也告诉我我使用了错误的排序规范。