MongoDB的$project能否返回一个数组?

11

иғҪеҗҰдҪҝз”ЁMongoDbзҡ„$projectиҒҡеҗҲж“ҚдҪңз¬Ұе°Ҷж–ҮжЎЈйҮҚз»„дёәж•°з»„пјҹ

зӣ®еүҚжҲ‘жүҖеҒҡзҡ„жҳҜпјҡ

var pipeline = [];
var project = {
    $project : {
        x: "$_id", 
        y: "$y" ,
        _id : 0
    }
};
pipeline.push(project);
model.aggregate( pipeline, callback);
这使我得到的输出形式为:
[
  { 
   x: '...',
   y: '...'
  }
 ....
]

我希望拥有:

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

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

2个回答

4
你可以尝试使用$push运算符。例如,如果你有以下文档:
{ _id: <something>, y: 5 } 

在Mongo shell中,如果您输入

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/


6
希望你能够提供以下内容的翻译:"result": [[ObjectId("5265dd479eb4b1d4289cf222"), 5]] - Varun Oberoi

1

MongoDB 3.2可让您投影数组值

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

简单且有效的技巧 - vikasThakur.com

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接