gpt4 book ai didi

arrays - Mongoose 传递嵌套排序对象来查询

转载 作者:太空宇宙 更新时间:2023-11-03 23:29:58 26 4
gpt4 key购买 nike

我有以下查询,它作为硬编码字符串传递有效:

router.get( '/rank/:round/', ( req, res, next ) => {

let query = { "score.0.r1" : -1};

Team.find( {} )
.sort( query )
.then( teams => {
return res.json( teams );
} ).catch( next );
} );

但是,当我尝试像这样传递路由参数 :round 时:

let query = { "score.0.r" + req.params.round : -1};

它不起作用(它返回一个未排序的列表)。

我也尝试过:

let sort = "score.0['r" + req.params.round + "']";
let query = { sort : -1 };

再次,没有成功。这是我正在查询的示例文档:

 {
"_id" : ObjectId("57cc7665a43bf14533b0d78a"),
"name" : “Joe Bloggs”,
"score" : [
{
"r5" : 23,
"r4" : 20,
"r3" : 25,
"r2" : 23,
"r1" : 40
}
]
}

...我试图返回按 r(轮)分数排序的列表。

最佳答案

我认为这应该可行。

let sort =  "score.0.r" + req.params.round
let query = { [sort] : -1 };

这只是 javascript,默认情况下 JavaScript 中对象的键会转换为字符串

let query = { "score.0.r" + req.params.round : -1};
query; //{ String("score.0.r" + req.params.round) : -1}
//{ '"score.0.r" + req.params.round': -1}

let sort = "score.0['r" + req.params.round + "']";
let query = { sort : -1 };
query; // { String(sort) : -1} => {"sort": -1}

要在 JavaScript 对象中进行动态键,只需用括号将键括起来

var string = "any_string" + variable
var obj = { [string] : "anyvalue"}
//this will tell javascript that the key is variable not a string

关于arrays - Mongoose 传递嵌套排序对象来查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39378108/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com