首页 > 解决方案 > 如何匹配mongoquery中的浮点值?

问题描述

这是我的 MongoDB 示例文档集合。我需要一个预期的结果,以便任何人指导我解决我的问题

/* 1 */
{
  "_id" : 1.0,
  "user_id" : "5c592f6716209a24f4125001",
  "tu_code" : "5"
}
/* 2 */
{
  "_id" : 2.0,
  "user_id" : "5c592f6716209a24f4125002",
  "tu_code" : "50"
}
/* 3 */
{
  "_id" : 3.0,
  "user_id" : "5c592f6716209a24f4125003",
  "tu_code" : "50.21"
}
/* 4 */
{
  "_id" : 4.0,
  "user_id" : "5c592f6716209a24f4125004",
  "tu_code" : "50.22"
}
/* 5 */
{
  "_id" : 5.0,
  "user_id" : "5c592f6716209a24f4125005",
  "tu_code" : "52"
}
/* 6 */
{
  "_id" : 3.0,
  "user_id" : "5c592f6716209a24f4125006",
  "tu_code" : "5.1"
}
/* 7 */
{
  "_id" : 6.0,
  "user_id" : "5c592f6716209a24f4125007",
  "tu_code" : "5.1.1"
}
/* 8 */
{
  "_id" : 7.0,
  "user_id" : "5c592f6716209a24f4125008",
  "tu_code" : "5.2"
}
/* 9 */
{
  "_id" : 8.0,
  "user_id" : "5c592f6716209a24f4125009",
  "tu_code" : "5.2.1"
}

在这里,我在下面提到了我的 mongo聚合查询

[ 
    { "$project": { 
        "tu_code": { "$toLower": "$tu_code" }, 
    }}, 
    { "$match": { "tu_code": {"$regex": "^5.*"}}}
]

上述查询产生以下结果

    | _id| tu_code |

    | ---| --------|

    | 1  | 5     |
    | 2  | 50    |
    | 3  | 50.21 |
    | 4  | 50.22 |
    | 5  | 52    |
    | 6  | 53    |
    | 7  | 5.1   |
    | 8  | 5.1.1 |
    | 9  | 5.2   |
    | 10 | 5.2.1 |

但我想要下面给出的预期结果

    | _id| tu_code |

    | ---| --------|

    | 1  | 5     |
    | 7  | 5.1   |
    | 8  | 5.1.1 |
    | 9  | 5.2   |
    | 10 | 5.2.1 |

任何人都可以帮我解决这个问题,我不知道如何得到我的预期结果。

标签: regexmongodbmongodb-querypymongo

解决方案


  • 您可以\b在搜索表达式的末尾使用(单词边界)运算符,
[
  {
    "$match": {
      "tu_code": {
        "$regex": "^5\\b"
      }
    }
  }
]

操场


推荐阅读