如何对与条件变量中的键匹配的Mongoose子文档进行排序。

时间:2019-03-21 16:05:49

标签: javascript mongodb mongoose

我需要的是通过Mongoose在创建任何新文档时添加的键“ _id”将记录搜索到集合中。搜索后,然后我需要提取文档,但按子文档字段对asc进行排序。

我发现的第一个方法是在模型中使用Mongoose的聚合函数,但是请记住我想使用通用条件函数,因此经过大量试验,发现我的唯一方法是Object.Assign参数。

然后,我使用$ unwind解构数组的子文档“ positions”,然后解构“ index”字段,以按“ name”和子文档“ index”字段的升序对结果进行排序(1)。

希望对其他任何人都有帮助。

所以我的问题是:有没有聚集功能的方法吗?预先感谢。

import {Types} from "mongoose";

function findByID( myId: string) {

  const ObjectId = Types.ObjectId;
  const conditions = { _id: ObjectId(myId) }

  return Authors.aggregate([
    { $match: Object.assign({},conditions) },
    { $unwind: '$positions'},
    { $unwind: '$positions.index'},
    { $sort: { 'name': 1 , 'positions.index': 1 } }
  ]).exec();
}

0 个答案:

没有答案