2016-08-09 46 views
0

首先,我对MongoDB仍然非常青睐。我有一个关于如何整理数据库中的数据的问题。 DB包含场馆收藏,我有一些条目。每个条目都有城市,其中一些有数组审查ID。所以我想按照这样的方式安排它,所以我有城市和每个评论的数量。通过重复字段对mongodb数据库中的数据进行排序

我只能通过使用能够拿出所有的场馆有没有评论:

db.venues.find(
{reviewdata: {$ne:[]}}, 
{city:1,reviewdata:1,_id:0} 
) 

我几乎坚持坚持,因为如果我想通过聚集城市更多的数据和组,并按评论数量排序我无法做到这一点。有没有办法结合.find().aggregate()函数?

回答

0

可以使用.aggregate()$match做到这一点:

过滤的文件只传递符合指定条件(S)到下一个流水线级的文件。

db.venues.aggregate([ 
    {$match: 
    { reviewdata: { $ne:[] } }, 
    { city:1, reviewdata:1, _id:0 } 
    }, 
    { $group: { 
    _id: "$city", // Or however you'd group it. Would need document input/output example 
    count: { $sum: 1 } // You can also add accumulator expressions, like this 
    } 
]) 
相关问题