资讯专栏INFORMATION COLUMN

Mongodb-$strLenCP的使用

Jason_Geng / 396人阅读

摘要:转载之前在使用时,我们经常会使用到函数来返回文本字段中值的长度。这样看来通过管道操作来实现会是不错的选择。

转载:http://forum.foxera.com/mongo...
之前在使用SQL时,我们经常会使用到Len()函数来返回文本字段中值的长度。那Mongodb是否有这样的操作呢,在version 3.4增加了此功能$strLenCP 如:有一个客户购买商品信息集合orderdetail

{"_id": ObjectId("5821757bf28fbb3e3516eeaa"), "memid" : "f5869354", "orderno" : "s00023","productno":"20206539", "comment":"这个平底锅太好用了,性价比高","telephone" :"18385669845"}
{"_id": ObjectId("5821776ff28fbb3e3516eeab"),  "memid" : "daisy", "orderno" : "s04567", "productno":"20225699","address":"comment","衣服穿起来很舒服好评" :"18855448645"}
{"_id": ObjectId("5821829ef28fbb3e3516eeac"),  "memid" : "lucy", "orderno" : "s08795", "productno":"20256339","address":"comment","还行" :"13869669585"}
{"_id": ObjectId("582182b0f28fbb3e3516eead"), "memid" : "c5633256", "orderno" :  "s45689","productno":"20285639","address":"comment","不好用,不建议买" :"13699869588"}

我们想统计客户评论信息的长度,操作如下:

db.orderdetail.aggregate(
  [
    {
      $project: {
        "_id":0,
        "orderno": 1,
        "productno":1,
        "comlength": { $strLenCP: "$comment" }
      }
    }
  ]
)
{"orderno" : "s00023", "productno":"20206539", "comlength":14}
{"orderno" : "s04567", "productno":"20225699", "comlength":10}
{"orderno" : "s08795", "productno":"20256339", "comlength":2}
{"orderno" : "s45689", "productno":"20285639", "comlength":8}

这样就可以得出长度,也可以通过这个length继续后面的分析

比如说想看看评论长度大于10的商品

db.orderdetail.aggregate(
  [
    {
      $project: {
        "_id":0,
        "orderno": 1,
        "productno":1,
         "comlength": { $strLenCP: "$comment" }
      }
    },
     {
         $match:{comlength:{$gt:10}}
      }
  ]
)
{"orderno" : "s00023", "productno":"20206539", "comlength":14}

需要注意一点的是$strLenCP和$strLenBytes功能相近,但是在统计字符的时候有区别

$strLenByte会区分字符类型,比如:汉字会默认为3个字节,特殊字符如€为3个字节,λ为2个字节,é也为2个字节

当然想要实现上述功能,还可以通过$where来实现,但是多数情况下都避免使用$where查询,比常规查询慢很多,每个文档都要从BSON转换成JavaScript对象,然后通过$where表达式来运行,而且不能使用索引。这样看来通过管道操作来实现会是不错的选择。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/19341.html

相关文章

  • (翻译) MongoDB(11) 在 SUSE 上安装MongoDB社区版

    摘要:概述使用这个教程在和使用软件包安装社区版虽然发行版包含自己的软件包官方的社区版包通常是最新的平台支持本安装教程仅支持位操作系统详细信息请参阅平台支持软件包在自己的存储库中提供官方支持软件包此存储库包含以下软件包软件名简介一个元软件包将自动 概述 使用这个教程在 SUSE Linux 11 和 12 使用 .rpm 软件包安装 MongoDB 社区版. 虽然 SUSE 发行版包含自己的 ...

    zone 评论0 收藏0
  • (翻译) MongoDB(17) 在 Windows 上安装MongoDB社区版

    摘要:概述使用本教程在系统上安装社区版平台支持自版本开始不支持请使用更新版本的来使用更新版本的重要如果你正在运行任何版本的或者请安装修复程序以解决上的内存映射文件的问题要求社区版需要或者更高版本安装程序包含所有其它软件依赖项将自动更新使用文件安装 概述 使用本教程在 Windows 系统上安装 MongoDB 社区版. 平台支持: 自2.2版本开始, MongoDB 不支持 Windo...

    shaonbean 评论0 收藏0
  • (翻译) MongoDB(12) 在 Amazon Linux 上安装MongoDB社区版

    摘要:概述使用这个教程在使用软件包安装社区版本安装教程仅支持位操作系统详细信息请参阅平台支持软件包在自己的存储库中提供官方支持软件包此存储库包含以下软件包软件名简介一个元软件包将自动安装下面列出的四个组件包包含守护程序和关联配置和初始化脚本 概述 使用这个教程在 Amazon Linux 使用 .rpm 软件包安装 MongoDB 社区版. 本安装教程仅支持64位操作系统. 详细信息请参阅平...

    gself 评论0 收藏0
  • (翻译) MongoDB(14) 在 Debian 上安装MongoDB社区版

    摘要:概述使用这个教程在或者使用软件包安装社区版虽然包含自己的软件包但官方的社区版包通常是最新的本安装教程仅支持位操作系统详细信息请参阅平台支持这些软件包可以与其它版本一起工作。 概述 使用这个教程在 Debian 7 Wheezy 或者 Debian 8 Jessie 使用 .deb 软件包安装 MongoDB 社区版. 虽然 Debian 包含自己的 MongoDB 软件包, 但官方的 ...

    gaara 评论0 收藏0
  • (翻译) MongoDB(13) 在 Ubuntu 上安装MongoDB社区版

    摘要:概述使用这个教程在使用软件包安装社区版包含自己的软件包但官方的社区版包通常是最新的平台支持本安装教程仅提供位长期支持版本例如,等等这些软件包可能将和其它版本一起工作然后它们并不支持软件包在自己的存储库中提供官方支持软件包此存储库包含以下软件 概述 使用这个教程在 LTS Ubuntu Linux 使用 .deb 软件包安装 MongoDB 社区版. Ubuntu 包含自己的 Mong...

    wuyumin 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<