我可以在mysql上轻松完成
select * from TABLE order by length(FIELD) asc
我怎样才能在MongoDB上做到这一点?
答案 0 :(得分:2)
MongoDB 3.4引入了最终支持此功能的$strLenCP
聚合运算符。一个例子:
db.collection.aggregate(
[
{$project: {
"field": 1,
"field_length": { $strLenCP: "$field" }
}},
{$sort: {"field_length": -1}},
{$project: {"field_length": 0}},
]
)
答案 1 :(得分:-1)
假设您的架构类似于:
example = {_id: "XXX", text: "YYY"}
db.example.aggregate([
{$project : {text : 1, length : {$size : "$text"}}},
{$sort : {length : 1}}
]);
我认为这将完成这项工作,但仅适用于mongo 2.6及以上
答案 2 :(得分:-1)
要对MongoDB中的文档进行排序,您需要使用sort()方法。该方法接受包含字段列表及其排序顺序的文档。要指定排序顺序1和-1。 1用于升序,而-1用于降序。
<强>语法强>
sort()方法的基本语法如下 -
db.COLLECTION_NAME.find().sort({KEY:1})
示例强>
考虑收集myycol有以下数据。
{ "_id" : ObjectId(5983548781331adf45ec5), "title":"MongoDB"}
{ "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL"}
{ "_id" : ObjectId(5983548781331adf45ec7), "title":"Untitled"}
以下示例将按降序显示按标题排序的文档。
db.mycol.find({},{"title":1,_id:0}).sort({"title":-1})
{"title":"Untitled"}
{"title":"NoSQL"}
{"title":"MongoDB"}
请注意,如果您未指定排序首选项,则sort()方法将按升序显示文档。