MongoDB 如何在聚合操作的投影中使用 $elemMatch

MongoDB 如何在聚合操作的投影中使用 $elemMatch

在本文中,我们将介绍如何在 MongoDB 的聚合操作中使用 $elemMatch 运算符来筛选并投影数组字段。

阅读更多:MongoDB 教程

什么是 $elemMatch 运算符?

MongoDB 中,$elemMatch 运算符用于在一个数组字段中进行匹配和筛选操作。它可以用于不仅仅是查询操作,还可以在聚合阶段中使用。

如何在聚合操作的投影中使用 $elemMatch?

在聚合操作的投影中使用 $elemMatch 运算符的基本语法如下所示:

{
  project: {
    field: {elemMatch: {
        condition
      }
    }
  }
}
SQL

其中,ReferenceError: katex is not defined

让我们通过一个示例来说明如何在聚合操作的投影中使用elemMatch。

假设我们有一个名为 books 的集合,其中包含以下文档:

{
  "_id": 1,
  "title": "Book 1",
  "authors": [
    {
      "name": "Author 1",
      "language": "English"
    },
    {
      "name": "Author 2",
      "language": "French"
    }
  ]
},
{
  "_id": 2,
  "title": "Book 2",
  "authors": [
    {
      "name": "Author 3",
      "language": "English"
    },
    {
      "name": "Author 4",
      "language": "German"
    }
  ]
}
JSON

现在我们希望在聚合操作的投影中只保留语言为英语的作者信息。我们可以使用 $elemMatch 运算符来实现这一目标,如下所示:

db.books.aggregate([
  {
    project: {
      _id: 0,
      title: 1,
      authors: {elemMatch: {
          language: "English"
        }
      }
    }
  }
])
JavaScript

上述聚合操作将返回以下结果:

[
  {
    "title": "Book 1",
    "authors": [
      {
        "name": "Author 1",
        "language": "English"
      }
    ]
  },
  {
    "title": "Book 2",
    "authors": [
      {
        "name": "Author 3",
        "language": "English"
      }
    ]
  }
]
JSON

可以看到,投影结果中只保留了语言为英语的作者信息。

此外,ReferenceError: katex is not definedgte、$lte 等。

总结

通过使用 ReferenceError: katex is not definedelemMatch 运算符。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册