Mongo DB聚合数组大小大于匹配

时间:2018-02-18 02:09:47

标签: mongodb aggregation-framework

我有一个集合,其中投资是mongodb文档中的一个数组。现在使用聚合我试图过滤投资长度超过5倍的结果,然后使用匹配查询进行下一次处理。

 Collection{
 _id:000000
 --------------------- 
 "investments" : [      {
          hhhhhhhhhhhhhh 
         },
         {
           hhhhhhhhhhhhhh 
          } }]
-----------------

我写的匹配查询如下所示并不起作用。任何建议:

db.companies.aggregate( [
    { $match:  {"founded_year" : 2004}, 
  {  "investments" : {$size: : { $gte: 5 } } }  },
----------------------------------
--------------------------------
]}

1 个答案:

答案 0 :(得分:3)

使用aggregate

db.companies.aggregate([
  { $match:  { "founded_year":2004 } },
  { $project: { founded_year:1,  
                moreThanFive: { $gt: [ {$size: "$external_links" }, 5 ] } } },
  { $match: { moreThanFive : true }} ,
])

您需要:
1.包括$project阶段,以查找投资数量(​​数组的size),并检查是否大于5。 2.然后执行另一个$match阶段,以过滤moreThanFive等于true的那些。

使用find

db.companies.find({'investments.5': {$exists: true}})

您询问investments数组中的位置编号6是否存在。