其实我想基于用户名聚合并包含地方信息。 它与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]
]
}
任何人都可以帮我解决这个问题。谢谢你。
答案 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);