【问题标题】:MongoDB/Mongoose: Sorting within a populated fieldMongoDB/Mongoose:在填充字段中排序
【发布时间】:2021-04-19 12:08:53
【问题描述】:

我对 MongoDB 很陌生,我无法找到以下解决方案:

我正在尝试按照人员的等级对人员进行排序。

CollectionPerson: _id, name, {rank_id}

CollectionRank: _id, RankName, level

我要完成的任务是按等级顺序获取列表。

任何解决方案或方向都会很好。

/编辑:

我的模特:

const RankSchema = new Schema({
    level: Number,
    dgGrp: Number,
    dgSold: String,
    dgNATO: String,
    hut: {
        bezX: String,
        bezM: String,
        bezS: String,
        img: String
    },
    lut: {
        bezX: String,
        bezM: String,
        bezS: String,
        img: String
    },
    mut: {
        bezX: String,
        bezM: String,
        bezS: String,
        img: String
    }
});

const PersonalSchema = new Schema({
    name: {
        type: String,
        required: true,
    },
    vname: String,
    pNum: {
        type: String,
        default: '01010101',
    },
    pKenn: {
        type: String,
        default: '010101-A-01010',
    },
    dg: {
        type: Schema.Types.ObjectId,
        required: true,
        ref: 'Rank'
    },
    uni: String,
    sex: String,
    konf: String,
    adresse: {
        str: String,
        plz: Number,
        ort: String,
        land: String,
        staat: String
    }
});

我的查询:

const personal = await Personal.find({}).populate({ path: 'dg', options: { sort: { level: 1 } } });

【问题讨论】:

  • 您好,欢迎来到 StackOverflow。请告诉我们您已经尝试过什么
  • 您好,阿巴斯,感谢您的回复。我编辑了最初的帖子,希望能把事情弄清楚。

标签: node.js database mongodb sorting mongoose


【解决方案1】:

在获取基本文档的查询已经执行后,Mongoose 在客户端完成填充。因此,已经对基础文档进行了排序(如果需要)。

你可以:

  • 自己构建一个聚合管道,$lookup 和 $sort。
  • 让 Mongoose 填充您的文档,然后在您的应用程序中按照您的意愿重新排序。

【讨论】:

  • 谢谢您的回复。我将如何在 nodejs 中实现聚合?我想出了下面的数据库字符串: db.getCollection('personals').aggregate([{$lookup: {from: "ranks", localField: "dg", foreignField: "_id", as: "rank"}} ,{$unwind: "$rank"},{$sort:{"rank.dgGrp":-1 ,"rank.level":-1}}])
  • 欢迎提出新问题。
猜你喜欢
  • 2019-10-19
  • 2015-09-19
  • 2012-07-15
  • 2015-01-10
  • 2012-01-22
  • 2021-07-09
  • 2017-05-21
  • 2023-04-02
  • 1970-01-01
相关资源
最近更新 更多