首页 > 解决方案 > MongoDB:如何计算键中值的数量

问题描述

我对 MongoDB 很陌生,我需要帮助弄清楚如何对 MongoDB 中的键执行聚合并使用该结果返回匹配项。

例如,如果我有一个名为 Fruits 的集合,其中包含以下文档:

{
    "id": 1,
    "name": "apple",
    "type": [
      "Granny smith",
      "Fuji"
    ]
  }, {
    "id": 2,
    "name": "grape",
    "type": [
      "green",
      "black"
    ]
  }, {
    "id": 3,
    "name": "orange",
    "type": [
      "navel"
    ]
  }

我如何编写一个查询来返回两种类型的水果名称,即苹果和葡萄?

谢谢!

标签: arraysjsonmongodb

解决方案


演示 - https://mongoplayground.net/p/ke3VJIErhvb

使用$size获取类型为 2 的记录

https://docs.mongodb.com/manual/reference/method/db.collection.find/#mongodb-method-db.collection.find

$size 运算符匹配具有参数指定的元素数量的任何数组。例如:

db.collection.find({
  type: { "$size": 2 } // match document with type having size 2
},
  { name: 1 } // projection to get name and _id only  
)

推荐阅读