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

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数据库:MongoDB与微服务架构集成

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

    MongoDB学习笔记1

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

    深入云计算 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>: ``` #### 三、选择或...

    MongoDB客户端工具

    MongoDB是一种流行的开源、分布式文档数据库,用于处理大量的结构化和非结构化数据。MongoDB客户端工具是与MongoDB数据库交互的重要组成部分,帮助用户进行数据管理、查询、分析以及数据库维护。MongoVUE是一个这样...

    mongodb-compass-1.20.5-win32-x64.zip

    安装完成后,用户可以在桌面快捷方式或者开始菜单启动MongoDB Compass,然后连接到本地或远程的MongoDB实例,开始他们的数据库管理工作。 总的来说,MongoDB Compass是MongoDB数据库管理员和开发者的得力助手,通过...

Global site tag (gtag.js) - Google Analytics