如何使用 Mongoose 查询过滤到数组类型字段中具有指定值的文档?

Posted

技术标签:

【中文标题】如何使用 Mongoose 查询过滤到数组类型字段中具有指定值的文档?【英文标题】:How to use Mongoose queries to filter to the documents that have a specified value inside an array-typed field? 【发布时间】:2021-10-15 13:47:26 【问题描述】:

我知道如何使用Model.findOne,但我希望将Mongoose queries 用于相同的任务。

如何使用 Mongoose 查询来做到这一点?

所以我有这个旧代码:

Notification.find(
  
    subscribers: user.id
  
)
...

我正在研究这个替代代码:

const r = await Notification.find()
  .where("subscribers")
  .equals(user.id)
...

但我认为.equals 不适用于这种情况,因为subscribersObjectIds 的数组,而user.id 是基于ObjectId 的字符串。

我搜索了官方 API 文档并没有找到答案。没有错误消息。

【问题讨论】:

【参考方案1】:

我找到了the Query.prototype.all method。现在代码如下所示:

const r = await Notification.find().where("subscribers").all([user.id]);
...

【讨论】:

以上是关于如何使用 Mongoose 查询过滤到数组类型字段中具有指定值的文档?的主要内容,如果未能解决你的问题,请参考以下文章

在 Mongoose/MongoDB 的文档中过滤数组、子文档、数组、文档

Mongoose 先填充,然后根据填充的字段进行过滤

Mongoose 先填充,然后根据填充的字段进行过滤

如何使用 mongoose 和 NodeJs 在 Mongodb 的数组字段中插入数据

如何对 Hasura 中的 ARRAY 字段类型运行 GraphQL 过滤器查询?

如何在 Mongoose 中找到与数组字段的最后一个元素与给定查询值匹配的所有文档?