2

我对 mongoDB 非常陌生,并试图找出一个作业查询。我想查找给定城市名称的所有州。

我从这里 http://docs.mongodb.org/manual/tutorial/aggregation-examples/有一个文件, 其中列出了模型

我试着做

aggregate({$group : { _id: $"state"}} , {$match : {city : "BOSTON"}});

关于为什么这不起作用的任何提示?

4

2 回答 2

2

我想答案是您不需要聚合来选择具有指定城市的州。

db.zipcodes.distinct('state', { city : 'BOSTON' })

关于表现 -distinct似乎aggregate表现几乎相同:

{“ts”:ISODate(“2013-05-04T06:52:02.772Z”),“op”:“command”,“ns”:“test.$cmd”,“command”:{“aggregate”:“邮政编码”,“管道”:[{“$match”:{“city”:“BELMONT”}},{“$group”:{“_id”:{“state”:“$state”}}}]} ,“ntoreturn”:1,“keyUpdates”:0,“numYield”:0,“lockStats”:{“timeLockedMicros”:{“r”:NumberLong(13990),“w”:NumberLong(0)},“timeAcquiringMicros “:{“r”:NumberLong(10),“w”:NumberLong(5)}},“responseLength”:436,“millis”:14,“client”:“127.0.0.1”,“用户”:“”}

对比

{“ts”:ISODate(“2013-05-04T06:52:11.169Z”),“op”:“command”,“ns”:“test.$cmd”,“command”:{“distinct”:“ zipcodes”、“key”:“state”、“query”:{“city”:“BELMONT”}}、“ntoreturn”:1、“keyUpdates”:0、“numYield”:0、“lockStats”:{“ timeLockedMicros”:{“r”:NumberLong(12153),“w”:NumberLong(0)},“timeAcquiringMicros”:{“r”:NumberLong(4),“w”:NumberLong(5)}},“responseLength “:262,“毫秒”:12,“客户端”:“127.0.0.1”,“用户”:“”}

于 2013-05-03T21:35:53.300 回答
1

这就是您使用聚合框架的方式:“zips”应该是您的集合。

db.zips.aggregate([
    {$match:
        {
            city: "BOSTON"
        }
    },
    {$group:
        {
            _id: {state: "$state"}
        }
    }
])
于 2013-05-04T03:51:05.227 回答