首页 > 解决方案 > 同时按两个字符串值对 mongodb 进行排序

问题描述

例如,我有如下架构:

{
    "ID": "257185",
    "Name": "xxxx",
    "isAvailable": "NO",
    "isSuper": "NO"
}

我想在 mongo 中对它的值isAvailableisSuper(字符串值)进行排序,所以我收到的第一条记录是 YES / YES 之后是 YES / NO 或 NO / YES。

我怎样才能达到这样的效果?我可以对此有任何指示吗?我想隐藏 NO / NO 记录

标签: node.jsmongodbmongoose

解决方案


您可以像这样使用使用猫鼬的简单find方法:

model.find({"$or": [
    {
      "isAvailable": "YES"
    },
    {
      "isSuper": "YES"
    }
  ]}).sort({isAvailable: -1,isSuper: -1})

或者,如果您使用的是聚合管道,则可以添加以下阶段:

db.collection.aggregate([
  {
    "$match": {
      "$or": [
        {
          "isAvailable": "YES"
        },
        {
          "isSuper": "YES"
        }
      ]
    }
  },
  {
    "$sort": {
      "isAvailable": -1,
      "isSuper": -1
    }
  }
])

这里的例子


推荐阅读