javascript - 仅对现有字段进行排序

标签 javascript node.js mongodb mongoose mongodb-query

我有这样的收藏。 只有少数用户有 sortOrder 字段

[{
    "_id": "59ccf78bde3d14019169c105",
    "name": "Best FX broker ",
},
{
    "_id": "59ccf78bde3d14019169c102",
    "name": "Best automated Performance tool ",
    "sortOrder": 1,
},
{
    "_id": "59ccf78bde3d14019169c104",
    "name": "Best Regtech/ reporting solution ",
},
{
    "_id": "59ccf78bde3d14019169c106",
    "name": "NEW: BEST CRYPTO SERVICE PROVIDER",
    "sortOrder": 2,
}]

当我按 sort({"sortOrder": 1}) 排序时,我得到了这个

[{
    "_id": "59ccf78bde3d14019169c105",
    "name": "Best FX broker ",
},
{
    "_id": "59ccf78bde3d14019169c104",
    "name": "Best Regtech/ reporting solution ",
},
{
   "_id": "59ccf78bde3d14019169c102",
    "name": "Best automated Performance tool ",
    "sortOrder": 1,
},
{
    "_id": "59ccf78bde3d14019169c106",
    "name": "NEW: BEST CRYPTO SERVICE PROVIDER",
    "sortOrder": 2,
}]

但我需要像这样对集合进行排序(顶部带有字段 sortOrder 的值)

[ {
   "_id": "59ccf78bde3d14019169c102",
    "name": "Best automated Performance tool ",
    "sortOrder": 1,
},
{
    "_id": "59ccf78bde3d14019169c106",
    "name": "NEW: BEST CRYPTO SERVICE PROVIDER",
    "sortOrder": 2,
},
{
    "_id": "59ccf78bde3d14019169c105",
    "name": "Best FX broker ",
},
{
    "_id": "59ccf78bde3d14019169c104",
    "name": "Best Regtech/ reporting solution ",
}]

我应该写什么查询来得到这个?

最佳答案

db.collection.aggregate([
{$project : {"_id" : 1, "sortOrder" : 1,"name":1, "sortOrder": { "$ifNull": [ "$sortOrder", ""] }}},
{$sort : {sortOrder : 1}}   
])

关于javascript - 仅对现有字段进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46668131/

相关文章:

javascript - D3 折线图 : Setting Y. 以特定数字为中心的域值

javascript - 交叉获取不适用于 React Native

javascript - 从 firebase 和唯一键检索数据

c# - MongoDb 驱动程序中的 Lambda 语法用于更新文档中的数组元素

linux - 如何将 EC2 用户从 ubuntu 更改为 mongodb?

javascript - 基于 JavaScript 的跨平台移动应用程序分析

javascript - cron 作业 node.js : job is repeating infinitely

javascript - 如何在Node JS中使用Redis session 设置Heroku Redis

node.js - NodeJS Batch Mongo 操作,等待回调

javascript - js函数中的'语法错误,意外标记='