我想知道是否有人知道如何find()
按字符串长度对mongodb 结果进行排序.
我尝试了类似db.foo.find().sort({item.lenght:-1})
但显然不起作用的东西.有人可以帮助我,并建议我在pymongo做同样的事情吗?
我个人喜欢在聚合框架中看到很多东西(和基本的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"值进行排序.
MongoDB v3.4 +现在有一个解决方案,使用$ strLenBytes使用聚合框架.鉴于以下文件:
{_id: 0, name: "Bob"}
我们可以用
db.mycollection.aggregate([{ $project: { byteLength: {$strLenBytes: "$name"} } }])
哪个字节数将返回3.