用于解析mongodb聚合返回的JSON的JavaScript
我不确定是否已经有一个类似的问题,但我不能找到它,而现在搜索一段时间。我使用的PHP Mongodb聚合返回json,如下所示用于解析mongodb聚合返回的JSON的JavaScript,javascript,php,mongodb,Javascript,Php,Mongodb,我不确定是否已经有一个类似的问题,但我不能找到它,而现在搜索一段时间。我使用的PHP Mongodb聚合返回json,如下所示 {"result":[{"_id":{"$id":"52fe557edf80a7a916b68612"},"numComments":3},{"_id": {"$id":"52dbabb34d4a130c43e6d12c"},"numComments":1}],"ok":1} 这是我正在使用的聚合 $result = $collection->aggreg
{"result":[{"_id":{"$id":"52fe557edf80a7a916b68612"},"numComments":3},{"_id": {"$id":"52dbabb34d4a130c43e6d12c"},"numComments":1}],"ok":1}
这是我正在使用的聚合
$result = $collection->aggregate(array(
array( '$match' => array( 'hide' => 0 )),
array('$unwind' => '$comments'),
array( '$group' => array( "_id" => '$_id',
'numComments' => array( '$sum' => 1) ,
)
),
array( '$sort' => array ( "numComments" => -1 )),
array('$limit' => 2)
)
);
echo json_encode($result);
我无法通过javascript解析输出(如前所述),只返回$id和numComments值。我试着通过几美元循环它们。每一个,但我总是得到它们作为未定义的,我猜我很接近,但还不能破解
对我遗漏的东西有什么指点吗?对我试图使用的代码的一些引用
...
results1 = $.parseJSON(JSON.stringify(results));
results2 = JSON.stringify(results);
var array = JSON.parse(results1);
$.each(results1, function(i,item){
console.log("item-result : " + item.i);
$.each(item.i, function(eventID,eventData) {
$.each(eventData.$id, function(eventID1,eventData1) {
console.log("item-result-NumComments : " + eventData1.numComments);
});
});
});
....
谢谢你的帮助
*更新*如何使Mongo在聚合中返回另一个字段“name”以及“$id”和numComments
解决方案这是使用Mongo实现的方法$addToSet有助于包含更多字段
db.records.aggregate(
{ $match : { 'hide' : 0 } } ,
{ $unwind : '$comments'},{$project : { name : '$name', pic1 : '$pic1' } } ,
{ $group : { _id : '$_id',numComments: { $sum : 1 } , name: { $addToSet : "$name" } }},
{ $sort : { 'numComments' : -1} } ,
{ $limit : 5 })
假设您已解析响应
数据
,您可以执行以下操作:
for (var i = 0; i < data.result.length; i++) {
console.log(data.result[i]._id["$id"]);
console.log(data.result[i].numComments);
}
for(var i=0;i
如果您使用的是jQuery的AJAX,那么应该已经对响应进行了解析(假设您在调用中指定了类型)效果很好。谢谢但是,我们必须这样做吗?它在处理解析结果时是否有任何性能影响?@Param——这是最简单的方法,您的响应是一个包含对象数组的对象,因此
for
循环是一种方法。不应该有任何性能影响。谢谢你,tymeJV。如何让Mongo在返回$id和numComments的同时再返回一个字段“name”?不确定,仍在学习Mongo,可能需要问另一个问题。我现在修改了我的问题。我从tymeJV那里得到了我先前问题的答案。谢谢如何在$id中包含另一个DB字段“name”?我找到了mongodb聚合解决方案,在这里更新了我的问题。它可能会对在这里寻找它的人有所帮助。