mongoDB mongoose聚合组数组返回[object]错误

时间:2015-08-06 07:29:31

标签: node.js mongoose

其实我想基于用户名聚合并包含地方信息。 它与mongo shell一起工作正常

db.demo_datas.aggregate([{"$group":{"_id":"$user_screenname", "place":{"$push":{"place":"$user_geo"}}}}]);

{
"_id" : "orena001",
"place" : [
    {
        "place" : [
            11.158983,
            78.163335
        ]
    },
    {
        "place" : [
            11.137964,
            78.16126
        ]
    }
]

}

现在,当我使用node.js mongoose时,place数组没有返回值。 mongoose node.js查询是

   demodatas.aggregate([{$group:{"_id":"$user_screenname", "place":{"$push":{"place":"$user_geo"}}}}], function(err, data){

console.log(data);
});

但它会返回这样的结果。

{ _id: 'orena001',
    place: 
     [ [Object],
       [Object] 
     ]
}

任何人都可以帮我解决这个问题。谢谢你。

1 个答案:

答案 0 :(得分:0)

请考虑以下事项:

> console.log({ foo : { bar : [ { xxx : 1 } ] } })
{ foo: { bar: [ [Object] ] } }

这显示出与您所看到的相似的输出。意外输出的原因是常规console.log()将仅显示特定深度的嵌套对象,之后它将缩写输出(在这种情况下,它将显示[Object]而不是实际宾语)。这并不意味着该对象无效,但是,当您打印它时,它只是以这种较短的格式显示。

要查看整个对象的一个​​解决方案是首先将其转换为JSON:

> console.log('%j', { foo : { bar : [ { xxx : 1 } ] } })
{"foo":{"bar":[{"xxx":1}]}}

或者,在您的情况下:

console.log('%j', data);