大家好,我遇到了一种情况,我需要对符合某些条件的数据进行排序,然后按优先级对它们进行排序,即首先我想按优先级降序对数据进行排序,然后在优先级为 1 时对它们进行排序(高)通过 createdAt 字段对文档进行排序,或者通过它的日期字段对文档进行排序。
我目前自己创建了一个聚合,但它没有返回正确的数据。
model.aggregate([
{
$match: {
jobId,
deprecated: false,
},
},
{
$project: {
document: "$$ROOT",
sort: {
$cond: {
if: {
$eq: ["$priority", 1],
},
then: "$createdAt",
else: "$date",
},
},
},
},
{
$sort: {
priority: -1,
sort: 1,
},
},
]);
嘿伙计们感谢您的时间我解决了我使用的问题
由于我正在使用document: "$$ROOT"
,我只是在 $project 中添加一个字段,因此它创建文档字段并将所有数据存储在其中,这就是优先级字段不可用的原因,
我只是priority:1
在 $project 中添加它,它包含该字段。下面我发布了工作代码,如果您也想要类似的东西,它可能会对您有所帮助。
model.aggregate([
{
$match: {
jobId: '5c501eed65816d61c6a0af77',
deprecated: false,
},
},
{
$project: {
document: "$$ROOT",
priority: 1,
sort: {
$cond: {
if: {
$eq: ["$priority", 1],
},
then: "$createdAt",
else: "$date",
},
},
},
},
{
$sort: {
priority: -1,
sort: 1,
},
},
])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句