Mongodb:项目只从字符串中获取数值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mongodb:项目只从字符串中获取数值相关的知识,希望对你有一定的参考价值。

是否有任何逻辑作为javascript替换(/ [^ d。] / g,'')方法。只获取字符串的数值。

从字符串中只获取整数

样本文件:

{
    "_id" : "1",
    "planName" : "Options Silver 1431B"
}
{
    "_id" : "1",
    "planName" : "Options Silver 1431A"
}
{
    "_id" : "1",
    "planName" : "myOptions 1431A"
}
{
    "_id" : "1",
    "planName" : "myOptions 1431"
}
{
    "_id" : "1",
    "planName" : "myOptions 1431A",

}

结果:

   {
        "_id" : "1",
        plan_id: "1431"
   },
   {
        "_id" : "1",
        plan_id: "1431"
   },
   {
        "_id" : "1",
        plan_id: "1431"
   },
   {
        "_id" : "1",
        plan_id: "1431"
   },
   {
       "_id" : "1",
        plan_id: "1431"
   }
答案

您可以使用聚合框架分三步完成:

  1. 使用$map$range将您的字符串转换为字符数组与$substrCP
  2. 使用$filter只保留数值("0" - "9"
  3. 使用$reduce将它们连接成一个字符串 db.col.aggregate([ { $addFields: { chars: { "$map":{ "input":{ "$range":[ 0, { "$strLenCP":"$planName" } ] }, "in":{ "$substrCP":[ "$planName", "$$this", 1 ] } } } } }, { $project: { numbers: { $filter: { input: "$chars", as: "char", cond: { $and: [ { $gte: [ "$$char", "0" ] }, { $lte: [ "$$char", "9" ] } ] } } } } }, { $project: { plan_id: { $reduce: { input: "$numbers", initialValue: "", in: { $concat : ["$$value", "$$this"] } } } } } ])

以上是关于Mongodb:项目只从字符串中获取数值的主要内容,如果未能解决你的问题,请参考以下文章

如何从该片段中的 onItemSelectedListener 中获取微调器单击的项目?

使用 node.js 从 Mongodb 获取数据时,浏览器会一直加载

如何将代码片段存储在 mongodb 中?

MongoDB:如何获取包含最接近给定数字的数值的文档

片段中的 notifyDataSetChanged() 不刷新列表视图

mongodb在子文档数组的数组中获取不同的项目