这是我的数据:
{
"name": "some name",
"blockNumber": 10,
"uniqueId: 2
},
{
"name": "some name",
"blockNumber": 9,
"uniqueId: 3
},
{
"name": "some name",
"blockNumber": 10,
"uniqueId: 1
},
这是我的询问:
myModel.aggregate([
{
$match: someFilter,
},
{
$sort: { blockNumber: -1 },
},
])
就有了预期的结果:
{
"name": "some name",
"blockNumber": 10,
"uniqueId: 1
},
{
"name": "some name",
"blockNumber": 10,
"uniqueId: 2
},
{
"name": "some name",
"blockNumber": 9,
"uniqueId: 3
}
我正在寻找一种方法,仅当多个文档的 blockNum 相同时,才根据第二个值(在本例中为 uniqueId)对数据进行额外排序,以便最终结果也按降序 uniqueId 排序。示例:
{
"name": "some name",
"blockNumber": 10,
"uniqueId: 2
},
{
"name": "some name",
"blockNumber": 10,
"uniqueId: 1
},
{
"name": "some name",
"blockNumber": 9,
"uniqueId: 3
}
我实际上想通了:只需在排序阶段添加第二个字段即可。 查询是:
myModel.aggregate([
{
$match: someFilter,
},
{
$sort: { blockNumber: -1, uniqueId: -1 },
},
])
结果:
{
"name": "some name",
"blockNumber": 10,
"uniqueId: 2
},
{
"name": "some name",
"blockNumber": 10,
"uniqueId: 1
},
{
"name": "some name",
"blockNumber": 9,
"uniqueId: 3
}
.sort({ $natural: 1 })
我实际上想通了:只需在排序阶段添加第二个字段即可。查询是: