Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.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 如何将文档数组转换为二维数组_Mongodb_Mongodb Query_Aggregation Framework - Fatal编程技术网

Mongodb 如何将文档数组转换为二维数组

Mongodb 如何将文档数组转换为二维数组,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,我正在向MongoDB查询 db.getCollection('user_actions').aggregate([ {$match: { type: 'play_started', entity_id: {$ne: null} }}, {$group: { _id: '$entity_id', view_count: {$sum: 1} }}, ]) 以及获取包含两个字段的文档列表: 如何获

我正在向MongoDB查询

db.getCollection('user_actions').aggregate([
    {$match: {
        type: 'play_started', 
        entity_id: {$ne: null}
    }},
    {$group: {
        _id: '$entity_id', 
        view_count: {$sum: 1}
    }},
])
以及获取包含两个字段的文档列表:

如何获得包含两个项目的列表,如

[[entity_id, view_count], [entity_id, view_count], ...]

实际上,根据您的MongoDB服务器版本,有两种不同的方法来实现这一点

最佳方法是在MongoDB 3.2中使用方括号
[]
直接在stage中创建新的数组字段。这将为每个组返回一个数组。下一个阶段是另一个
$group
阶段,您可以在其中对文档进行分组,并使用累加器操作符返回二维数组

db.getCollection('user_actions')。聚合([
{“$match”:{
“类型”:“开始播放”,
“实体id”:{“$ne”:null}
}},
{“$组”:{
“\u id”:“$entity\u id”,
“查看计数”:{“$sum”:1}
}},
{“$project”:{
“_id”:0,
“结果”:[“$\u id”、“$view\u count”]
}}, 
{“$group”:{
“_id”:空,
“结果”:{“$push”:“$result”}
}}
])

从MongoDB 2.6到3.2之前,您需要一种不同的方法。要创建数组,需要使用运算符。由于
$map
“input”字段必须解析为和数组,因此需要使用运算符将文字数组值设置为
input
。当然,这里的运算符会根据“布尔表达式”返回“实体id”或“视图计数”

db.getCollection('user_actions')。聚合([
{“$match”:{
“类型”:“开始播放”,
“实体id”:{“$ne”:null}
}},
{“$组”:{
“\u id”:“$entity\u id”,
“查看计数”:{“$sum”:1}
}},
{“$project”:{
“_id”:0,
“结果”:{
“$map”:{
“输入”:{“$literal”:[“A”,“B”]},
“as”:“el”,
“在”:{
“$cond”:[
{“$eq”:[“$$el”,“A”]},
“$\u id”,
“$view\u count”
]
}
}
}
}},
{“$group”:{
“_id”:空,
“结果”:{“$push”:“$result”}
}}
])

值得注意的是,这也将在MongoDB 2.4中起作用。如果您运行的是MongoDB 2.2,则可以使用未记录的
$const
运算符,该运算符也可以执行相同的操作。

请发布一些示例文档。