使用 $switch 将分数添加到 MongoDB 聚合

2024-01-06

我正在尝试根据哪个值向我的 mongodb 聚合添加一个分数name字段匹配。

例如:如果name与“sitt”完全匹配,得分为100。 如果name匹配 /sitt/i,得分为 50。

这是我的代码:

db.getCollection('tags').aggregate([
  {
    "$match": {
      "$or": [
        {
          "name": "sitt"
        },
        {
            "name": /sitt/i
        },
        {
            "name": /^sitt/i
        }
      ]
    }
  },
  {
    "$project": {
      "name": 1,
      "score": {
        "$switch": {
          "branches": [
            {
              "case": {"name": "sitt"},
              "then": 100
            },
            {
              "case": {"name": /sitt/i},
              "then": 50
            }
          ],
          "default": 0
        }
      }
    }
  }
])

But the score结果总是 100。这个陈述总是正确的。

$switch case 是否仅适用于数值?


看起来像{"name": "sitt"}总是决心true。你应该使用**$eq**操作员使其工作。

另请注意,您的**$match**阶段可以简化很多,因为你的 3 个表达式相当于

{$match: {name: /sitt/i}}

所以你的查询变成:

db.getCollection('tags').aggregate([
   {
      $match:{
         name:/sitt/i
      }
   },
   {
      $project:{
         name: 1,
         score:{
            $switch:{
               branches:[
                  {
                     case:{
                        $eq:[
                           "$name",
                           "sitt"
                        ]
                     },
                     then:100
                  }
               ],
               default:50
            }
         }
      }
   }
])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 $switch 将分数添加到 MongoDB 聚合 的相关文章

随机推荐

  • R - 仅绘制文本

    好奇如何创建仅包含文本信息的绘图 这本质上是绘图窗口的 打印 到目前为止我发现的最佳选择如下 library RGraphics library gridExtra text paste n The following is text th
  • Visual Studio 任务运行程序“语法错误:在严格模式下使用 const。”

    使用Win10 Pro VS2015进行 网站 项目 不是asp net 基本网站 当尝试保存 重新加载 gulpfile js 时 我收到错误消息 来自任务运行程序资源管理器 输出 语法错误 在严格模式下使用 const 在目前的情况下
  • pm安装错误的包名

    我最近制作了一个新应用程序 只有一个最小的 MainActivity 存根 当我使用 Android Studio 和 gradle 项目运行应用程序时 应用程序失败并显示以下消息 Uploading file local path C U
  • 如何在Java中更快地解压缩XZ文件?

    我的 SQLite 数据库文件大小为 85MB 使用 XZ 格式压缩 大小已减小到 16MB 我使用以下代码 以及由Java 的 XZ http tukaani org xz java html 在Android Jelly Bean中解压
  • 四舍五入双精度值,同时保留尾随零

    这是我的函数 将数字四舍五入到小数点后两位 但是当四舍五入的数字为 1 50 时 它似乎忽略尾随零并只返回 1 5 public static double roundOff double number double accuracy 20
  • Python re.sub:忽略替换字符串中的反向引用

    我想用字符串替换模式 该字符串在变量中给出 当然 它可能包含 1 并且不应将其解释为反向引用 而应简单地解释为 1 我怎样才能做到这一点 之前的答案使用re escape 会转义太多 并且您会在替换和替换字符串中得到不需要的反斜杠 似乎在
  • 如何限制用户在输入元素中输入10位数字?

    我想为电话号码创建一个输入字段 我正在使用 JavaScript 动态创建输入字段
  • 带对齐的字符串格式货币

    print this is 0 gt 10 2f format 3 44 打印出 this is 3 44 即分开 从金额 有没有办法在金额旁边的正确位置打印带有货币符号的间隔列 例如 this is 3 44 I tried print
  • MongoDB:使用 2 个嵌套数组更新文档中的平均值

    我有以下 MongoDB 文档 id ObjectId company name Name registered 2 21 2015 2 00 trucks truck id TEB7622 weight 88 33 capacity 27
  • CamelCase JSON WebAPI 子对象(嵌套对象、子对象)

    我正在创建一个复杂的对象 其中包含要从我的 Web api 控制器返回的子对象 嵌套对象 该对象包含其他对象类型的列表 列表中的这些子对象类型遵循 NET 中使用的 pascal 大小写 var persons peopleLookup V
  • 如何最好地将模糊的 ProgressBar 放置在屏幕上的 ConstraintLayout 上?

    当我单击 登录 按钮时 会显示一个进度条 我通过在顶部添加一个工具栏对布局进行了修改 似乎该工具栏现在遮盖了进度栏 如何使该进度条在屏幕中央的某个位置可见 非常感谢您的帮助 布局xml代码如下所示 活动登录 xml
  • Chrome、Safari 和 Firefox 中内联块元素之间的幽灵空间 [重复]

    这个问题在这里已经有答案了 如何删除内联块元素之间的幽灵空间 这是一个jsfiddlehttp jsfiddle net hFDcV http jsfiddle net hFDcV 您可以清楚地看到 div 之间的水平空间 StackOve
  • 忽略实体框架中的特定列? [复制]

    这个问题在这里已经有答案了 我从实体框架版本 4 1 10331 0 中的数据库自动生成了模型 我想忽略实体中的列 而不使用 Fluent Api 且不更改ObjectContext into DbContext 当然 不会从 SQL 表中
  • 使用 pdfmake 在段落周围添加边框

    我正在通过生成pdfpdfmake http bpampuch github io pdfmake 假设我有这样的 pdf 内容 var docDefinition content Lorem ipsum dolor sit amet co
  • Python 中的字符串是池化的吗?

    Python 是否有一个所有字符串的池 并且它们 字符串 是单例吗 更准确地说 在下面的代码中 是在内存中创建了一个还是两个字符串 a str num b str num 字符串在 Python 中是不可变的 因此实现可以决定是否实习 这是
  • heroku 上的 Hapi 服务器无法绑定端口

    我正在为 ReactJS 应用程序开发 Hapi 服务器 但当我尝试部署到 Heroku 时 收到 R10 错误 无法在启动后 60 秒内绑定到 PORT 到底是怎么回事 我正在使用 process env PORT 我也尝试过 parse
  • Web 应用程序安全的好指南? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我非常擅长制作网络应用程序 并且知道如何在客户端 服务器等之间传输数据 尽管学习如何使数据交换更安全 但我需要一些帮助 这就是为什么我有点害怕发
  • 如何在 C++ 中存储变量数据

    我正在创建一个存储有关特定数据源的元数据的类 元数据采用树状结构 与 XML 的结构非常相似 元数据值可以是整数 小数或字符串值 我很好奇 C 中是否有一种好方法来存储这种情况的变体数据 我希望变体使用标准库 因此我避免使用可用的 COM
  • Numba:如何抑制

    我的 numba 代码中不断出现此错误 Warning 101 0 Unused argument self 我的 numba 代码如下 如何抑制错误消息 autojit def initialise output data self in
  • 使用 $switch 将分数添加到 MongoDB 聚合

    我正在尝试根据哪个值向我的 mongodb 聚合添加一个分数name字段匹配 例如 如果name与 sitt 完全匹配 得分为100 如果name匹配 sitt i 得分为 50 这是我的代码 db getCollection tags a