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"
}
答案
您可以使用聚合框架分三步完成:
- 使用$map和$range将您的字符串转换为字符数组与$substrCP
- 使用$filter只保留数值(
"0"
-"9"
) - 使用$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 获取数据时,浏览器会一直加载