首页 > 解决方案 > MongoDB - 如何查找仅包含指定值的数组

问题描述

假设我有以下文件

segments
{
  "name":"S1",
},
{
  "name":"S2",
},
{
  "name":"S3",
}

和用户

users
{
  "id":1234.
  "segments":["S1","S2","S3"]
}
{
  "id":1235.
  "segments":["S1"]
}
{
  "id":1237.
  "segments":["S2"]
}
{
  "id":1236.
  "segments":["S1","S2"]
}

如果我执行 users.find({ "segments" : "S2" }),它会带来所有带有字段“S2”的文档。

我正在寻找的是,只有值 S2 的数组。我正在寻找这个输出:

{
  "id":1237.
  "segments":["S2"]
}

因为它只有我正在寻找的 S2

标签: arraysmongodbsearchmongodb-query

解决方案


您可以使用$elemMatch投影

db.collection.find({
  segments: ["S2"]
})

推荐阅读