填充字段的Mongoose排序和搜索文档

时间:2017-12-11 16:44:20

标签: node.js mongodb express mongoose

我有收藏用户,新闻和用户新闻。"用户新闻"填充到"用户"和"新闻"。

我可以对" user-news"的文档进行排序和搜索by" user.name"或" news.title" ?

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) => {...}

1 个答案:

答案 0 :(得分:4)

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

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