查询依赖数组大小与值匹配的文档

时间:2016-11-10 20:28:59

标签: node.js mongodb mongodb-query aggregation-framework

我有以下架构:

Collection1
  name
  slug
Collection2
  name
  slugCollection1

"链接" Collection1Collection2之间的字段是slugslugCollection1

我尝试使用MongoDB的聚合框架实现一个请求,以获取Collection1的所有元素,这些元素具有特定名称和类型为Collection2的依赖元素的数量。

我可以获得利用$project的提示:

[
  {
    "$lookup": {
      "from": "Collection2",
      "localField": "slug",
      "foreignField": "slugCollection1",
      "as": "elements"
    }
  },
  {
    "$project": {
      "_id": 0,
      "id": "$id",
      "name": 1,
      "slug": 1,
      "elementsNumber": {
        "$size": "$elements"
      }
    }
  }
]

但我稍后无法将elementsNumber字段用于$match。我想这是因为它不是Collection1的字段部分。

有没有办法实现这样的查询? 谢谢!

1 个答案:

答案 0 :(得分:2)

您当然可以使用 $match 管道来过滤具有以下标准的文档:

[
    {
        "$lookup": {
            "from": "Collection2",
            "localField": "slug",
            "foreignField": "slugCollection1",
            "as": "elements"
        }
    },
    {
        "$project": {
            "_id": 0,
            "id": "$id",
            "name": 1,
            "slug": 1,
            "elementsNumber": { "$size": "$elements" }
        }
    },
    { "$match": { "elementsNumber": { "$gt": 3 } } }
]