MongoDB找到了城市

时间:2013-05-03 20:53:28

标签: mongodb

我对mongoDB很新,并试图找出一个分配的查询。我想查找给定城市名称的所有州。

我有一个来自这里的文件 http://docs.mongodb.org/manual/tutorial/aggregation-examples/ 列出模型的地方

我试过

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

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

2 个答案:

答案 0 :(得分:2)

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

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

关于效果 - distinctaggregate似乎表现几乎相同:

  

{“ts”:ISODate(“2013-05-04T06:52:02.772Z”),“op”:“command”,“ns”:   “test。$ cmd”,“command”:{“aggregate”:“zipcodes”,“pipeline”:[{     “$ 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”,“user”:“”}

VS

  

{“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,   “millis”:12,“client”:“127.0.0.1”,“user”:“”}

答案 1 :(得分:1)

这是您使用聚合框架的方式: “zips”应该是你的收藏。

db.zips.aggregate([
    {$match:
        {
            city: "BOSTON"
        }
    },
    {$group:
        {
            _id: {state: "$state"}
        }
    }
])