我对mongoDB很新,并试图找出一个分配的查询。我想查找给定城市名称的所有州。
我有一个来自这里的文件 http://docs.mongodb.org/manual/tutorial/aggregation-examples/ 列出模型的地方
我试过
aggregate({$group : { _id: $"state"}} , {$match : {city : "BOSTON"}});
关于为什么这不起作用的任何提示?
答案 0 :(得分:2)
我想答案是你不需要聚合来选择具有指定城市的州。
db.zipcodes.distinct('state', { city : 'BOSTON' })
关于效果 - distinct
和aggregate
似乎表现几乎相同:
{“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"}
}
}
])