Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.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 如何在pymongo中按特定字段分组输出?_Mongodb_Mongodb Query_Aggregation Framework_Pymongo - Fatal编程技术网

Mongodb 如何在pymongo中按特定字段分组输出?

Mongodb 如何在pymongo中按特定字段分组输出?,mongodb,mongodb-query,aggregation-framework,pymongo,Mongodb,Mongodb Query,Aggregation Framework,Pymongo,MongoDB中有一个集合 例:- 我想按字段查询文档组的收集和输出:- 示例:-获取字段1为a分组依据field2值的文档 { field1: a, field2: 1, field3: val_1, field4: val_11} { field1: a, field2: 1, field3: val_4, field4: val_44} { field1: a, field2: 1, field3: val_9, field4: val_99} { field1: a, field2:

MongoDB中有一个集合

例:-

我想按字段查询文档组的收集和输出:-

示例:-获取
字段1
a
分组依据
field2
值的文档

{ field1: a, field2: 1, field3: val_1, field4: val_11}
{ field1: a, field2: 1, field3: val_4, field4: val_44}
{ field1: a, field2: 1, field3: val_9, field4: val_99}

{ field1: a, field2: 2, field3: val_2, field4: val_22}
{ field1: a, field2: 2, field3: val_8, field4: val_88}
{ field1: a, field2: 2, field3: val_10, field4: val_1010}

{ field1: a, field2: 5, field3: val_3, field4: val_33}
{ field1: a, field2: 5, field3: val_7, field4: val_77} 

{ field1: a, field2: 3, field3: val_5, field4: val_55}
{ field1: a, field2: 3, field3: val_6, field4: val_66} 
{ field1: a, field2: 3, field3: val_11, field4: val_1111}
我试图在
aggregate
中使用
$group
,但无法实现预期的输出


如何实现预期输出。

$match
将筛选出
字段1
不等于
a
的文档

$group
将对数据进行分组,然后在数据字段中对
\u id
$push
文档中的表达式进行分组

db.collection.aggregate([
  { "$match": { "field1": "a" }},
  { "$group": {
    "_id": "$field2",
    "data": {
      "$push": "$$ROOT"
    }
  }}
])

@rahulKushwaha更新了我的答案。使用聚合运算符对我来说很困难,您是否也可以按
字段3
对每个组进行排序?MongoDB提供了一个关于聚合框架的完整免费在线培训课程。@JoeDrumgoole您为什么要分享?有什么原因吗?作者说他对聚合框架有困难(“使用聚合操作符对我来说很困难”)。这种免费的训练可以帮助他克服困难。
db.collection.aggregate([
  { "$match": { "field1": "a" }},
  { "$group": {
    "_id": "$field2",
    "data": {
      "$push": "$$ROOT"
    }
  }}
])