我有一个mongodb集合,我根据上次更新日期使用{ $sort : { updated_at : -1 } }
对其进行排序。
现在我正在尝试更新我的查询仍然按updated_at
排序,但首先优先选择满足某个条件的文档,例如字段的数组长度大于零,即{'img.0': { $exists: true }}
但是如何在排序查询中将它组合起来呢?
我的要求是查询应首先返回img
长度大于0的所有文档,按updated_at
排序,然后列出按updated_at
由于
答案 0 :(得分:3)
使用 aggregation framework ,您的管道会在其中创建一个额外字段,其中包含代表上述条件的标记,您可以将其与updated_at
字段一起用作排序选项:
db.test.aggregate([
{
"$project": {
"img": 1,
"updated_at": 1,
"other_fields": 1,
"hasImages": {
"$cond": [
{
"$ne": [
{
"$size": { "$ifNull": [ "$img", [] ] }
},
0
]
},
1, 0
]
}
}
},
{
"$sort": {
"hasImages": -1, "updated_at": - 1
}
}
])
检查下面的测试演示
答案 1 :(得分:0)
double (*matrix)[m] = malloc(sizeof(double[m][m]));
或
malloc