Mongoose 查询以查找唯一值

Mui*_*rik 1 mongoose mongodb aggregation-framework

在我的 MongoDB 后端中,我想创建一个端点,该端点返回名为department. 现在,如果我在 IntelliShell 中执行此操作,我会执行以下操作:

db.staffmembers.distinct( "department" )
Run Code Online (Sandbox Code Playgroud)

这将返回一个包含所有值的数组department

但是如何在像这样的 Mongoose find() 查询中返回所有唯一值?

Staffmember.find({ name: 'john', age: { $gte: 18 }});
Run Code Online (Sandbox Code Playgroud)

换句话说,如果我想使用find()上面的like 来返回department“staffmembers”集合中的所有唯一值,语法会是什么样的?

mic*_*ckl 5

您可以使用.aggregate()您的条件并将其传递到$matchstage,然后使用$addToSetinside$group来获取唯一值。

let result = await Staffmember.aggregate([
    { $match: { name: 'john', age: { $gte: 18 }} },
    { $group: { _id: null, departments: { $addToSet: "$department" } } }
]);
Run Code Online (Sandbox Code Playgroud)