string - 在查找时转换 MongoDB 数据

标签 string function mongodb transform

是否可以转换从 MongoDB 中的 Find 查询返回的数据?

例如,我有一个 firstlast 字段来存储用户的名字和姓氏。在某些查询中,我希望仅返回名字和姓氏首字母(例如,“Joe Smith”返回为“Joe S”)。在 MySQL 中,可以在 SELECT 语句中的字段上使用 SUBSTRING() 函数。

Mongo 中是否有像 SQL 中那样的数据转换或字符串函数?如果可以,请提供一个使用示例。如果没有,除了循环返回的对象之外,是否有建议的转换数据的方法?

最佳答案

用 mongodb 几乎可以在服务器端做任何事情。你通常会听到“不”的原因是你牺牲了太多的速度以使其在正常情况下没有意义。 PyMongo 背后的主要力量之一,10gen 的 Mike Dirolf,在这里有一篇关于使用服务器端 javascript 和 pymongo 的很好的博客文章:http://dirolf.com/2010/04/05/stored-javascript-in-mongodb-and-pymongo.html .他的示例用于存储一个 javascript 函数以返回两个字段的总和。但是您可以轻松修改以返回用户名字段的第一个字母。要点是这样的:

db.system_js.first_letter = "function (x) { return x.charAt(0); }"

不过,首先要了解,mongodb 非常擅长检索数据,而不是处理数据。建议(例如,参见 Oreilly 的 Kristina Chodorow 为 mongodb 开发人员提供的 50 个提示和技巧)是执行 Andrew 上面简要提到的操作:创建首字母列并返回它。任何处理都可以在应用程序中更有效地完成。

但是,如果您觉得即使在从“ View ”返回全名[0] 之前查询全名也会带来太大的安全风险,那么您不需要尽可能快地完成所有操作。由于所有公众对速度的担忧,我有一段时间避免在 mongodb 中使用 map-reduce。然后我运行了我的第一个 map reduce 并在它处理 80,000 个 10k 文档时转动了我的拇指 0.1 秒。我意识到事情的计划,那很小。但它说明,仅仅因为大型网站在某些服务器端处理上受到性能影响是不好的,并不意味着这对您来说很重要。就我而言,我想迁移到 Hadoop 比时不时吃那 0.1 秒要花的时间稍微长一些。祝你的网站好运

关于string - 在查找时转换 MongoDB 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8100838/

相关文章:

string - Haskell 中的内存高效字符串

python - MongoDB 与 Python,用于存储游戏的用户名和密码

ios - 为什么不可能附加一个字符串!通过 += 运营商?

ruby - 检查字符串是否包含一个或多个单词

postgresql - 每个唯一值执行一次函数

c++ - 什么是真正的虚函数?

c++ - 添加语句后值没有增加?

javascript - 查找超过20个用户mongodb

MongoDB 模式设计适用于 Tinder 之类的应用程序、嵌入式文档还是单独的集合?

c++ - 小字符串优化(调试与 Release模式)