我在数据库集合中有一个文档列表。排序的文档通过前端拖放功能进行更改。文档的order
字段按升序排序所有文档。例如,
[{
order: 1,
no: 1
......
},
{
order: 2,
no: 2
......
},
{
order: 3,
no: 3
......
}]
现在,当拖放应用时,它可能会更改为不同的格式。例如-
[{
order: 3,
no: 1
......
},
{
order: 1,
no: 2
......
},
{
order: 2,
no: 3
......
}]
现在从前端开始对列表进行排序已经不是问题了,稍后通过点击按钮,一条新的记录就会添加到列表的顶部,从客户端重新按升序排序也完全不是问题。
实际发放
我在页面上有分页,所以每次我都不能从客户端编程中对所有项目进行排序。应该只有/best方法可以从MongoDB查询中对它们进行排序。例如,使用下面的查询我可以对文档进行排序-
db.collection.aggregate([
{
"$sort": {
order: 1
}
}
])
但是如果order
字段有重号或者没有任何数值,上面的查询就无法排序,有没有查询可以自动对顺序字段进行升序排序,不管重号还是没有数值?
例如,如果我们有以下格式的文档-
[
{
order: null,
no: 1,
...
},
{
order: 1,
no: 2,
...
},
{
order: 1,
no: 3,
...
},
{
order: 3,
no: 4,
...
},
]
则应转换为-
[
{
order: 1,
no: 1,
...
},
{
order: 2,
no: 2,
...
},
{
order: 3,
no: 3,
...
},
{
order: 4,
no: 4,
...
},
]
1条答案
按热度按时间2ul0zpep1#
我们可以使用
$addFields
和$ifNull
来设置查询中可空字段的默认值