当前位置:  开发笔记 > 数据库 > 正文

在Mongodb/pymongo中按字符串长度排序

如何解决《在Mongodb/pymongo中按字符串长度排序》经验,为你挑选了2个好方法。

我想知道是否有人知道如何find()按字符串长度对mongodb 结果进行排序.

我尝试了类似db.foo.find().sort({item.lenght:-1})但显然不起作用的东西.有人可以帮助我,并建议我在pymongo做同样的事情吗?



1> Neil Lunn..:

我个人喜欢在聚合框架中看到很多东西(和基本的API),例如:

数学函数

log(以对数表示)

小区

地板

排列

长度

仅举几个.

而且,$mod在"ceil"和"floor"等情况下,并没有采用操作员或其他方式的模糊用法.但我离题了.

您的"字符串长度"属于此类别.提出有关它的JIRA问题.但是现在你可以使用mapReduce和现有的JavaScript功能:

db.collection.mapReduce(
    function() {
        emit( this.item.length, this.item );
    },
    function(key,values) {
        return values;
    },
    { "out": { "inline": 1 } }
)

因此,虽然确实有"mapReduce"时髦风格返回重新形状的文档,当然在数组中匹配相同长度的所有内容,它所做的是利用"mapReduce"的本质(不仅仅是受限制的)到MongoDB)并允许在响应中对发出的"key"值进行排序.



2> rrrr..:

MongoDB v3.4 +现在有一个解决方案,使用$ strLenBytes使用聚合框架.鉴于以下文件:

{_id: 0, name: "Bob"}

我们可以用

db.mycollection.aggregate([{
    $project: {
         byteLength: {$strLenBytes: "$name"}
    }
}])

哪个字节数将返回3.

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有