是否有可能mongodb的$项目返回一个数组?

MongoDb的$项目聚合操作符是否有可能将文档重构为一个数组?

这是我到目前为止所做的:

var pipeline = []; var project = { $project : { x: "$_id", y: "$y" , _id : 0 } }; pipeline.push(project); model.aggregate( pipeline, callback); 

这给了我输出的forms:

 [ { x: '...', y: '...' } .... ] 

我想拥有:

 [ ['..','..'] .... ] 

我可以很容易地通过迭代来重构输出,但是真的很好奇,知道聚合本身是否可以返回数组而不是对象。

你可以试试$ push操作符。

例如,如果您拥有以下文件:

 { _id: <something>, y: 5 } 

在mongo shell中,如果你input的话

 db.model.aggregate( [ { $group: { _id: null, newArrayField: { $push: { x: "$_id", y: "$y" } } } } ] ) 

你会得到:

 { "result" : [ { "_id" : null, "newArrayField" : [ { "x" : ObjectId("5265dd479eb4b1d4289cf222"), "y" : 5 } ] } ], "ok" : 1 } 

有关$ push操作符的更多信息,请参阅http://docs.mongodb.org/manual/reference/operator/aggregation/push/

使用MongoDB 3.2,您可以投影数组值

 db.model.aggregate({ $project: {arrayField: ['$_id', '$y']} })