【问题标题】:Mongoose sort and search document by populated fieldMongoose 按填充字段排序和搜索文档
【发布时间】:2017-12-11 16:44:20
【问题描述】:

我有集合 user、news 和 user-news。“user-news”填充到“user”和“news”。

我可以按“user.name”或“news.title”对“user-news”的文档进行排序和搜索吗?

const usersSchema = new Schema({ name: String })

const newsSchema = new Schema({ title: String }),

UsersNewsModel.find(queryObj)
    .populate('user', 'name')
    .populate('news', 'title')
    .sort({ 'user.name': -1 })
    .exec((findError, records) => {...}

【问题讨论】:

    标签: node.js mongodb express mongoose


    【解决方案1】:

    Mongoose 填充不支持从填充字段排序。但是你可以用聚合做这样的事情。

    UsersNewsModel.aggregate([
      {
        $lookup: {
            from        : 'user',
            localField  : 'user',
            foreignField: '_id',
            as          : 'user'
        }
      },
      {
        $unwind: {
          path: $user
        }
      },
      {
        $sort: {
          'user.name': -1
        }
      }
    ])
    

    【讨论】:

      猜你喜欢
      • 2015-09-19
      • 2019-10-19
      • 2012-07-15
      • 2023-04-01
      • 2021-04-19
      • 2016-05-31
      • 2019-10-30
      • 2020-04-19
      • 2012-01-22
      相关资源
      最近更新 更多