gpt4 book ai didi

mongodb - 按值排序项目 mongodb

转载 作者:可可西里 更新时间:2023-11-01 09:59:01 24 4
gpt4 key购买 nike

我想通过将具有特定值的项目放在其他项目之前来对集合进行排序。

例如,我希望所有带有 "getthisfirst": "yes" 的项目都在所有其他项目之前。

{"getthisfirst": "yes"}
{"getthisfirst": "yes"}
{"getthisfirst": "no"}
{"getthisfirst": "maybe"}

最佳答案

这作为一般概念称为“加权”。因此,在没有任何其他机制的情况下,您可以通过逻辑地将“权重”的值“投影”到文档中来在 MongoDB 查询中逻辑地处理这个问题。

“投影”和更改文档中存在的字段的方法是 .aggregate()方法,具体来说是 $project流水线阶段:

db.collection.aggregate([
{ "$project": {
"getthisfirst": 1,
"weight": {
"$cond": [
{ "$eq": [ "$getthisfirst", "yes" ] },
10,
{ "$cond": [
{ "$eq": [ "$getthisfirst", "maybe" ] },
5,
0
]}
]
}
}},
{ "$sort": { "weight": -1 } }
]);

$cond这里的运算符是 "ternary" ( if/then/else ) 条件,其中第一个参数是到达 bool 值 true|false 的条件语句。如果 true“then”返回第二个参数作为结果,否则返回“else”或第三个参数作为响应。

在这种“嵌套”情况下,如果"is"匹配,则分配一定的“权重”分数,否则我们继续下一个条件测试,当“可能”匹配时,另一个分数是分配,否则得分为 0,因为我们只有三个匹配的可能性。

然后 $sort应用条件是为了“排序”(按降序排列)具有最大“权重”的结果。

关于mongodb - 按值排序项目 mongodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31896241/

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