我需要的是通过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();
}