乐闻世界logo
搜索文章和话题

How can I query with elemMatch in mongoose?

6 个月前提问
5 个月前修改
浏览次数23

1个答案

1

在 Mongoose 中,$elemMatch 是 MongoDB 提供的一个操作符,用于在查询数组类型的字段时,选择数组中符合给定查询条件的元素。$elemMatch 可以在数组中的文档对象上应用多个查询条件,只有同时满足所有条件的元素才会被选中。

例如,假设我们有一个叫 User 的模型,其中包含一个 awards 数组字段,每个元素都是一个包含 titleyear 的对象。如果我们想查找获得了特定奖项且在特定年份获奖的用户,我们可以使用 $elemMatch 来构造查询。

下面是一个具体的例子:

javascript
const mongoose = require('mongoose'); const Schema = mongoose.Schema; const userSchema = new Schema({ name: String, awards: [{ title: String, year: Number }] }); const User = mongoose.model('User', userSchema); // 查询获得了“最佳新人”奖项并且在2020年获奖的用户 User.find({ awards: { $elemMatch: { title: '最佳新人', year: 2020 } } }) .then(users => { console.log(users); }) .catch(err => { console.error(err); });

在这个查询中,我们使用了 $elemMatch 来指定我们需要在 awards 数组中查找的条件。只有当数组中的某个元素同时满足 title 为 “最佳新人” 和 year 为 2020 的条件时,包含这个数组的文档才会被返回。

这是 Mongoose 中使用 $elemMatch 进行查询的一个基本示例,它非常适用于数组中包含多字段对象,并且需要基于多个条件进行筛选的情况。

2024年6月29日 12:07 回复

你的答案