如何根据字段是否存在对MongoDB集合排序

多米尼克·奎兹维奇

在我的应用程序中,我有一个端点,该端点应该找到满足某些条件的所有用户,然后以数组形式返回结果。结果按创建日期排序。现在,我需要进行更复杂的排序。

1)返回首先上传个人资料照片的用户(这是我必须添加的主要条件)2)此外,结果应按创建日期排序,但头像上传的用户应始终优先(尽管他们已经创建了)稍后再登录)

这是我的代码:

router.get('/users/:page?', ({ params, query }, response) => {
    let { page = 1 } = params;
    page = _.parseInt(page);
    let { limit = 50 } = query;
    limit = _.parseInt(limit);
    const skip = page * limit - limit;

    User.find({ name: { $exists: true }})
        .limit(limit)
        .skip(skip)
        .sort({ created: 1 })
        .exec((error, users) => {
            if (error) {
                return response.status(500).send('users-couldnt-be-found');
            }

            response.status(200).send(users);
        });
});

我的示例json集合:

[
    { name: 'Jon without avatar', created: '2020-01-28T22:29:48.603Z' }
    { name: 'Jon with avatar', avatar: '/path/to/file', created: '2020-01-28T22:29:48.603Z' }
]

我尝试使用aggregategroup但是我不太了解它是如何工作的。我将不胜感激。

劳伦·舍费尔

您可以使用聚合管道。

[
{$project: {
  _id: 1,
  created: 1,
  avatar: 1,
  avatarExists: {
    $cond: [
      {$ifNull: ["$avatar", false]},
      1,
      0
    ]
  }
}}, 
{$sort: {
  avatarExists: -1,
  created: 1
}}]

$ project阶段添加一个新字段,以指示该化身是否存在。$ sort阶段首先对化身是否存在进行排序,然后对创建日期进行排序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据对象中字段的存在对数组进行排序

如何根据字段将mongodb集合拆分为多个集合

如何检查集合是否存在MongoDB Golang

如何根据POJO的特定字段值对集合进行排序?

R尝试根据列表是否存在对列表中的URL进行排序

如何检查MongoDB中是否存在字段?

根据由字段值指定的嵌入式对象的字段值对MongoDB集合排序?

根据属性存在对数组进行排序

根据列名中后缀的存在对列进行排序

从firebase firestore检索后如何根据字段对firestore集合文档进行排序

尝试查看列表中的值是否存在于特定字段的mongoDB集合中

按属性是否存在对对象数组进行排序

MongoDB 3 Java检查集合是否存在

如何获取 mongodb 集合中字段的最常用值的排序列表

MongoDb-如何使用Java对集合中的多个字段进行排序和搜索

检查MongoDB中是否存在对象(文档)(使用Jongo)

如何检查Cloud Firestore中集合中所有文档中是否都存在字段值?

如何根据二进制字段大小选择性地删除 MongoDB 集合中文档中的字段?

如何使用C#驱动程序检查MongoDB中是否存在集合?

如何根据字段的数值对文件排序?

JAVA:如何根据字段对列表进行排序

如何按键从MongoDB集合中删除字段?

如何合并mongodb集合中的字段

使用MongoDB检查字段是否存在

MongoDB。选择存在于其他集合中的字段

如何判断模板中是否存在对象?

如何检查数组中是否存在对象-Basic Javascript

如何检查Java的LinkedList中是否存在对象?

Git:如何确定是否存在对提交的引用