Arrays mongodb对排序字段选项进行动态查询
我使用聚合查询来显示给定代码片段的一些结果Arrays mongodb对排序字段选项进行动态查询,arrays,json,node.js,mongodb,mongoose,Arrays,Json,Node.js,Mongodb,Mongoose,我使用聚合查询来显示给定代码片段的一些结果 if (name) { sort = { '$sort': { name: -1 } } } else { sort = '' } User.aggregate([sort, { $match: {} }]) 问题是当名称的值未设置时,聚合查询给出了如何在nodejs中使此聚合查询动态的错误。根据用户选择的过滤器,我需要在任何地方安装排序选项。这应该可以: var query = [{ $match: {} }] if
if (name) {
sort = { '$sort': { name: -1 } }
} else {
sort = ''
}
User.aggregate([sort, { $match: {} }])
问题是当名称的值未设置时,聚合查询给出了如何在nodejs中使此聚合查询动态的错误。根据用户选择的过滤器,我需要在任何地方安装排序选项。这应该可以:
var query = [{
$match: {}
}]
if(name)
{
query.unshift({ '$sort': { name: -1 } });
}
User.aggregate(query)
这应该起作用:
var query = [{
$match: {}
}]
if(name)
{
query.unshift({ '$sort': { name: -1 } });
}
User.aggregate(query)
我不能这样做,因为我有聚合管道,我需要在任何地方安装排序选项,query.push最终将推送排序选项。如果(name){query.unshift({'$sort':{name:-1}});}它也不起作用,而不是在数组的开头添加排序管道,有时我需要把排序放在开头,有时放在结尾。我做不到这一点,因为我有聚合管道,我需要将排序选项放在任何地方,query.push将把排序选项放在末尾。如果(name){query.unshift({'$sort':{name:-1}}),使用push代替push,将排序管道添加到数组的开头
if(name){query.unshift({'$sort':{name:-1});}
它也不起作用,有时我需要在开始或结束时进行排序。