集合中文档的形状
[
{
"predictions": [
"611b85b9b2b924245526c125"
],
"_id": "611e40b6dd381f18cf63d15f",
"__v": 0
},
{
"predictions": [
"611b85b9b2b924245526c125"
],
"_id": "611e40b6dd381f18cf63d160",
"__v": 0
}
]
我的聚合管道
ActiveFixture.aggregate([
{$match:{fixture:{$in:fixtureIds}}},
{$project:{"predictions":1, _id:0}},
{$unwind:"$predictions"},
{$group:{_id:'blah', "Predictions":{"$push":"$predictions"}}}
]).exec()
电流输出:
[
{
"_id": "blah",
"Predictions": [
"611b85b9b2b924245526c125",
"611b85b9b2b924245526c125",
"611b85b9b2b924245526c125",
"611b85b9b2b924245526c125"
]
}
]
期望的输出将是来自预测数组的所有值作为单个数组:
["611b85b9b2b924245526c125", "611b85b9b2b924245526c125", "611b85b9b2b924245526c125"]
任何想法和建议都将不胜感激。显然,我很清楚用JS将当前输出转换为所需形状是很简单的,但目标是用MongoDB Aggregation 实现最终产品
$unwind
所有预测,按null分组(所有集合为1组),$push
所有成员到数组。
此处测试代码
db.collection.aggregate([
{
"$unwind": {
"path": "$predictions"
}
},
{
"$group": {
"_id": null,
"predictions": {
"$push": "$predictions"
}
}
},
{
"$project": {
"_id": 0
}
}
])
如果您想跳过您的id column
,那么您应该使用mongodb的$skip命令。它允许您跳过文档数或您应用的任何其他条件
如果您想有条件地从输出中删除一些数据。您可以使用以下查询
db.collection.aggregate( [ { $project : { "_id" : 0, "predictions" : 1 } } ] )