假设我有一个包含以下文档的集合:
title1, title3, title2
我希望它们按以下顺序显示:
表示上述数据应显示:{count > 0}: 1, title: 1
所以基本上按db.documents.find().sort({count: 1, title: 1})
我从这开始:
{{1}}
但这会按计数排序,而不是按计数是否大于0进行排序。
有办法做到这一点吗?
答案 0 :(得分:1)
一个技巧就是使用两个助手。
helperName: function() {
return Somethings.find({count:{$gte:1}}, {sort: {title: //something})
}
helperNameTwo: function() {
return Somethings.find({count:0}}, {sort: {title: //something})
}
答案 1 :(得分:0)
使用find()
语句无法做到这一点,但您可以按以下方式对其进行汇总:
示例代码:
db.document.aggregate([
{$project:{"title":1,
"count":1,
"sort_field":{$cond:[{$eq:["$count",0]},Infinity,"$count"]}}},
{$sort:{"sort_field":1,"title":1}},
{$project:{"count":1,"title":1}}
])
测试数据:
db.document.insert([
{
"title":"test2",
"count": 0
},
{
"title":"test1",
"count": 2
},
{
"title":"test3",
"count": 3
}
])
测试结果:
{
"_id" : ObjectId("567887f8b506fc2193a2269b"),
"title" : "test1",
"count" : 2
}
{
"_id" : ObjectId("567887f8b506fc2193a2269c"),
"title" : "test3",
"count" : 3
}
{
"_id" : ObjectId("567887f8b506fc2193a2269a"),
"title" : "test2",
"count" : 0
}