Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 基于条件查找和计数mongo数组中的一致性_Mongodb_Aggregation Framework - Fatal编程技术网

Mongodb 基于条件查找和计数mongo数组中的一致性

Mongodb 基于条件查找和计数mongo数组中的一致性,mongodb,aggregation-framework,Mongodb,Aggregation Framework,假设我有一个文档集,类似于: { _id :ObjectId("45645645gdfgdfgdf"), article:"article one", topic:["config","develop","show"], keys[ {subject:"one",object"abc"}, {subject:"one",object"def"}, {subject:"two",object"ghi"}, {subject:"four",object"jkl"},

假设我有一个文档集,类似于:

{
_id :ObjectId("45645645gdfgdfgdf"),
article:"article one",
topic:["config","develop","show"],
keys[
    {subject:"one",object"abc"},
    {subject:"one",object"def"},
    {subject:"two",object"ghi"},
    {subject:"four",object"jkl"},
    {subject:"four",object"mnl"},
    {subject:"four",object"mnl"},
]
},
{
_id :ObjectId("45645645gdfgdfgdf"),
article:"article two",
topic:["config","installing"],
keys[
    {subject:"one",object"abc"},
    {subject:"one",object"def"},
    {subject:"two",object"ghi"},
    {subject:"two",object"jkl"},
]
},
{
_id :ObjectId("45645645gdfgdfgdf"),
article:"article three",
topic:["config","installing"],
keys[
    {subject:"five",object"abc"},
    {subject:"five",object"def"},
    {subject:"two",object"ghi"},
    {subject:"two",object"jkl"},
]
}
我想根据一个条件计算数组中的每个主题,并按主题过滤,例如,假设我按主题搜索:“config”和主题:[“one”,“four”]结果需要

{article :"article one", sum:5},{article :"article two", sum:2}

thks提前

您可以使用下面的聚合

db.colname.aggregate([
  {"$match":{"topic":"config","subject":{"$in":["one","four"]}}},
  {"$project":{
    "article":1,
    "sum":{
      "$size":{
        "$filter":{
          "input":"$keys",
          "cond":{"$in":["$$this.subject",["one","four"]]}
        }
      }
    }
  }}
])

谢谢,这段代码帮助我理解了mongo的查询思想