MongoDB自定义排序顺序,用于带分页的查询

我在具有此架构的 MongoDB 集合中有一些文档:

{
    "_id": {
        "$oid": "60c1e8e318afd80016ce58b1"
    },
    "searchPriority": 1,
    "isLive": false,
    "vehicleCondition": "USED",
    "vehicleDetails": {
        "city": "Delhi"
    }
},
{
    "_id": {
        "$oid": "60c1f2f418afd80016ce58b5"
    },
    "searchPriority": 2,
    "isLive": false,
    "vehicleCondition": "USED",
    "vehicleDetails": {
        "city": "Delhi"
    }
},
{
    "_id": {
        "$oid": "60cb429eadd33c00139d2be7"
    },
    "searchPriority": 1,
    "isLive": false,
    "vehicleCondition": "USED",
    "vehicleDetails": {
        "city": "Gurugram"
    }
},
{
    "_id": {
        "$oid": "60c21be618afd80016ce5905"
    },
    "searchPriority": 2,
    "isLive": false,
    "vehicleCondition": "USED",
    "vehicleDetails": {
        "city": "New Delhi"
    }
},
{
    "_id": {
        "$oid": "60e306d29e452d00134b978f"
    },
    "searchPriority": 3,
    "isLive": false,
    "vehicleCondition": "USED",
    "vehicleDetails": {
        "city": "New Delhi"
    }
}

vehicleCondition可以是NEWor USEDisLive可以是trueor ,false并且searchPriority是 1 到 3 之间的一个整数。(数字越小意味着它在搜索结果中应该越高)

在这里,除了_id其他字段都不是唯一的。我在isLive,vehicleDetails.city和上创建了一个复合索引 searchPriority

在我的应用程序中,我将执行一些这种形式的查询:

  • 查找所有汽车,其中isLiveis truevehicleDetails.cityisDelhiNew DelhiorGurugramvehicleConditionis
    USED(or NEW)。

为此,我可以执行这样的查找查询:

db.collection.find({"isLive": true, "vehicleDetails.city": { $in: [ "Gurugram", "Delhi", "New Delhi" ] }, "vehicleCondition": "USED" }, {})

我希望此查询的结果按以下顺序排序:

  • 属于$in查找查询中 arrray 中第一个城市的所有汽车,具有最低优先级
  • $in在查找查询中属于第一个城市的所有汽车,具有第二低的优先级
  • 属于$in查找查询中 arrray 中第一个城市的所有汽车,具有第三低的优先级
  • $in在查找查询中属于第二个城市的所有汽车,具有最低优先级
  • $in在查找查询中属于第二个城市的所有汽车,具有第二低的优先级
  • $in在查找查询中属于第二个城市的所有汽车,具有第三低的优先级 在查找查询中属于第三个城市的所有汽车$in,具有最低的优先级
  • $in在查找查询中属于第三个城市的所有汽车,具有第二低的优先级
  • $in在查找查询中属于第三个城市的所有汽车,具有第三低的优先级

我怎样才能做到这一点?由于此查询返回的文档数量可能非常大,因此我将使用分页来限制返回文档的数量。这个额外的要求对这个问题的可能解决方案有什么影响吗?

以上是MongoDB自定义排序顺序,用于带分页的查询的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>