mongodb命令行中的查询
Posted
技术标签:
【中文标题】mongodb命令行中的查询【英文标题】:queries in mongodb command line 【发布时间】:2015-04-26 00:10:46 【问题描述】:我想做一个查询,在大数据中列出人口在 6000 到 8000 之间的特定州的城市。看起来像这样:
"_id" : "01564", "city" : "STERLING", "loc" : [ -71.775192, 42.435351 ], "pop" : 6481, "state" : "MA"
"_id" : "01566", "city" : "STURBRIDGE", "loc" : [ -72.084233, 42.112619 ], "pop" : 7001, "state" : "MA"
"_id" : "01568", "city" : "WEST UPTON", "loc" : [ -71.608014, 42.173275 ], "pop" : 4682, "state" : "MA"
"_id" : "01569", "city" : "UXBRIDGE", "loc" : [ -71.632869, 42.074426 ], "pop" : 10364, "state" : "MA"
我想返回马萨诸塞州的城市,比如上面的例子。我怎样才能做到这一点 ? T 试图这样做:
>db.zipcodes.aggregate( [ $group: _id: "$city",stateName:"$state", totalPop: $sum: "$pop" ,
$match: totalPop: $gte: 1000 , $lte : 2000 ,stateName:"Massachusetts" ] );
我在下面得到了这个错误:
aggregate failed
at Error (<anonymous>)
at doassert (src/mongo/shell/assert.js:11:14)
at Function.assert.commandWorked (src/mongo/shell/assert.js:254:5)
at DBCollection.aggregate (src/mongo/shell/collection.js:1278:12)
at (shell):1:13 at src/mongo/shell/assert.js:13
【问题讨论】:
你真的应该自己做作业。您已获得所有必要信息。 【参考方案1】:您不需要使用聚合框架。
db.zipcodes.find(
state: 'MA',
pop:
$gte: 6000,
$lte: 8000
, city: 1)
如果您只需要城市名称(唯一),您可以使用distinct
db.zipcodes.distinct('city',
state: 'MA',
pop:
$gte: 6000,
$lte: 8000
)
甚至使用foreach
【讨论】:
错误:错误:“$err”:“无法规范化查询:obj 中的 BadValue >1 字段: $gte: 6000.0, $lte: 8000.0 ”,“code”:17287 :( @SalehMakkawy 它应该是其他方式。改变了。 我不想要所有的信息,只需要城市名称我可以这样做。以上是关于mongodb命令行中的查询的主要内容,如果未能解决你的问题,请参考以下文章