`
datamachine
  • 浏览: 163983 次
社区版块
存档分类
最新评论

MongoDB的本地化排序

    博客分类:
  • DB
阅读更多

   对于本地化语言(例如:中文),mongodb是按照UNICODE编码排序,而不是根据本地语言的编码排序。用esProc集算器结合mongodb可以方便的实现本地化语言的排序(例如:中文按照拼音排序)。下面我们以中文为例,来看一下具体做法。

   Mongodb中的集合person保存了姓名和性别如下:
   > db.person.find()
    { “_id” : ObjectId(“544e4e070f03ad39eb2bf498″), “name” : “宋江”, “gender” : “男”}
    { “_id” : ObjectId(“544e4e070f03ad39eb2bf499″), “name” : “李逵”, “gender” : “男”}
    { “_id” : ObjectId(“544e4e070f03ad39eb2bf49a”), “name” : “吴用”, “gender” : “男”}
    { “_id” : ObjectId(“544e4e070f03ad39eb2bf49b”), “name” : “晁盖”, “gender” : “男”}
    { “_id” : ObjectId(“544e4e070f03ad39eb2bf49c”), “name” : “公孙胜”, “gender” : “男” }
    { “_id” : ObjectId(“544e4e070f03ad39eb2bf49d”), “name” : “鲁智深”, “gender” : “男” }
    { “_id” : ObjectId(“544e4e070f03ad39eb2bf49e”), “name” : “武松”, “gender” : “男”}
    { “_id” : ObjectId(“544e4e070f03ad39eb2bf49f”), “name” : “阮小二”, “gender” : “男” }
    { “_id” : ObjectId(“544e4e070f03ad39eb2bf4a0″), “name” : “杨志”, “gender” : “男”}
    { “_id” : ObjectId(“544e4e070f03ad39eb2bf4a1″), “name” : “孙二娘”, “gender” : “女” }
    { “_id” : ObjectId(“544e4e070f03ad39eb2bf4a2″), “name” : “扈三娘”, “gender” : “女” }
    { “_id” : ObjectId(“544e4e080f03ad39eb2bf4a3″), “name” : “燕青”, “gender” : “男”}
   …
   直接用mongodb的sort函数,没有按照拼音排序:
    > db.person.find({},{“name”:1,”gender”:1,”_id”:0}).sort({“name”:1})
    { “name” : “公孙胜”, “gender” : “男” }
    { “name” : “吴用”, “gender” : “男” }
    { “name” : “孙二娘”, “gender” : “女” }
    { “name” : “宋江”, “gender” : “男” }
    { “name” : “扈三娘”, “gender” : “女” }
    { “name” : “晁盖”, “gender” : “男” }
    { “name” : “李逵”, “gender” : “男” }
    { “name” : “杨志”, “gender” : “男” }
    { “name” : “武松”, “gender” : “男” }
    { “name” : “燕青”, “gender” : “男” }
    { “name” : “阮小二”, “gender” : “男” }
    { “name” : “鲁智深”, “gender” : “男” }
    …

   用集算器协助mongodb的脚本如下:



 

   A1:连接mongodb,ip和端口号是localhost:27017,数据库是test,用户名和密码都是test。如果需要其他参数的话可以按照mongo://ip:port/db?arg=value&…格式继续写参数。
   A2:使用find函数从mongodb中取数,形成游标。集合是person,过滤条件是空,指定键是name和gender。可以看出find函数和mongdb的find函数类似。esProc的游标是分批读取和处理数据,可以避免数据量过大,内存出现溢出的情况。
   A3:因为数据量不大,所以这里fetch出游标的所有记录。
   A4:使用sort按照name升序排序。排序所使用的语言是中文。集算器支持的其他本地化语言,见后。
   运行的结果是:



 

   需要说明的是:esProc并不包含mongodb的java驱动包。用esProc来访问mongodb,必须提前将mongodb的java驱动包(要求2.12.2或以上版,如mongo-java-driver-2.12.2.jar)放到[esProc安装目录]\common\jdbc中。
   esProc协助mongodb计算的脚本很容易集成到java中,只要增加一行A5,写成result A4即可向java输出resultset形式的结果,具体的代码参考esProc教程。同样,用java调用esProc访问mongodb也必须将mongdb的java驱动包放到java程序的classpath中。
   Mongodb的java驱动包下载地址是:https://github.com/mongodb/mongo-java-driver/releases。

 

  • 大小: 25.6 KB
  • 大小: 15.6 KB
1
3
分享到:
评论
1 楼 Long_yuan 2015-08-18  
说了半天加个字段就好了嘛。。。。。。

相关推荐

    C#\MongoDB应用开发实战\MongoDB

    在课程中,你将学习如何配置MongoDB服务器,无论是本地安装还是远程服务器。理解MongoDB的配置文件`mongod.cfg`和命令行参数是至关重要的,这些设置会影响数据库的运行方式和性能。同时,我们还会讲解如何启动和停止...

    mongodb-compass windows客户端管理工具

    10. **依赖库**:压缩包中的其他文件如`icudtl.dat`、`vulkan-1.dll`等是MongoDB Compass运行所依赖的国际化和图形处理库,它们对于程序的本地化和高性能渲染至关重要。 总的来说,MongoDB Compass是MongoDB数据库...

    Mongodb参考手册

    在本手册的工具和程序参考页中,您可以看到MongoDB的包组件、内部元数据、配置数据库以及本地数据库和系统集合等。这些都是运行MongoDB所必需的组件和设置,例如配置文件可以用来设置数据库的运行参数,比如数据存储...

    php操作MongoDB使用说明

    首先,要连接MongoDB,可以实例化`Mongo`类。默认情况下,`new Mongo()`会连接到本地主机的27017端口。如果需要连接到远程服务器或指定其他参数,可以通过字符串格式化的方式传递连接信息,例如: ```php $mongo = ...

    mongoDB 桌面管理工具

    "mongoDB桌面管理工具"就是针对这种情况设计的,特别适用于Windows操作系统,旨在简化对远程或本地MongoDB服务器的管理任务。 这款工具主要提供了以下功能: 1. 数据库连接:它允许用户创建和管理多个MongoDB...

    mongodb-compass-1.20.5-win32-x64.rar

    10. **连接管理**:用户可以轻松连接到本地或远程MongoDB实例,包括 Atlas(MongoDB 的云服务)或其他托管服务。Compass 支持SSH隧道,确保远程访问的安全性。 总之,MongoDB Compass是MongoDB开发和管理过程中的...

    mongodb-compass-1.25.0-win32-x64_2.zip

    启动Compass,连接到本地或远程MongoDB实例,输入凭据后即可开始操作。 4. **与MongoDB的配合** MongoDB Compass与MongoDB Server紧密配合,可以连接到任何版本的MongoDB,包括社区版和企业版。它适用于开发、测试...

    mongodb管理工具

    4. 查询构建器:提供一种可视化的方式,帮助用户构建复杂的查询语句,包括条件过滤、聚合操作、排序和分页等,使得不熟悉MongoDB查询语法的用户也能轻松操作。 5. 图形化数据导入导出:工具通常会提供导入和导出...

    MongoDB权威指南(中文版)高清

    1319.4.3 复制状态和本地数据库 1329.4.4 阻塞复制 1329.5 管理 1339.5.1 诊断 1339.5.2 变更oplog的大小 1349.5.3 复制的认证问题 134第10章 分片 13510.1 分片简介 13510.2 MongoDB中的自动分片...

    MongoDB数据库:MongoDB与微服务架构集成

    在这个例子中,我们使用Python的pymongo库连接到本地的MongoDB服务器,并在`mydatabase`数据库的`mycollection`集合中插入了一个文档。然后,通过查询`name`字段为“张三”的文档来检索数据。MongoDB的查询语言允许...

    MongoDB学习笔记1

    1. 定义连接字符串,这里使用的是 "mongodb://localhost",表示连接本地主机的 MongoDB 服务。 2. 指定要操作的数据库名和集合名。在示例中,我们创建了一个名为 "myDatabase" 的数据库和一个名为 "myCollection" 的...

    电子书:MongoDB权威指南(中文版)

    1319.4.3 复制状态和本地数据库 1329.4.4 阻塞复制 1329.5 管理 1339.5.1 诊断 1339.5.2 变更oplog 的大小 1349.5.3 认证复制 134第10 章 分片 13510.1 分片简介 13510.2 MongoDB 中的分片 ...

    深入云计算 MongoDB管理与开发实战详解pdf.part1

    11.5.3 复制状态和本地数据库 11.5.4 阻塞复制 11.6 管理 11.6.1 诊断 11.6.2 变更oplog的大小 11.6.3 复制的认证问题 11.7 本章小结 第12章 sharding 分片 12.1 分片简介 12.2 MongoDB中的...

    MongoDB的Linux安装、基本操作、可视化、实验源码与报告文档.docx

    - **查询语言**:MongoDB支持一种基于JSON格式的丰富查询语言,能够执行复杂的查询操作,如范围查询、正则表达式匹配、排序、分组等高级功能,极大地方便了开发者对数据的操作。 - **分布式扩展**:通过分片...

    mongodb 数据库基本操作

    使用MongoDB的命令行客户端`mongo`,可以连接到本地或远程的MongoDB服务器。输入`mongo`命令后,你将看到一个MongoDB的交互式shell。 3. 数据库操作: - 创建数据库:在MongoDB中,每个数据库都有一个唯一的名称...

    mongodb数据库基本操作.pdf

    如果MongoDB运行在本地主机上,可以使用MongoDB Shell来连接: ```bash mongo ``` 如果需要连接远程服务器上的MongoDB实例,则可以通过以下命令指定主机名和端口: ```bash mongo <hostname>: ``` #### 三、选择或...

Global site tag (gtag.js) - Google Analytics