在查询mongodb后,仅显示列表中的值

时间:2013-12-15 20:15:16

标签: mongodb pymongo

我想知道我是否可以只从列表中返回的查询结果中显示值。

我正在运行以下内容:

a = ast.literal_eval(json.dumps(list(db.bastion.find( { },{ 'counter': 1, '_id': False } ))))

返回与此类似的内容:

[{'counter': 10447}, {'counter': 25375}, {'counter': 11963}, {'counter': 17297},
 {'counter': 5893}, {'counter': 19955}, {'counter': 5159}, {'counter': 3988},
 {'counter': 7638}, {'counter': 8250}, {'counter': 29514}, {'counter': 4940},
 {'counter': 12834}, {'counter': 31153}, {'counter': 8588}, {'counter': 17585},
 {'counter': 7099}, {'counter': 18580}, {'counter': 2575}, {'counter': 3696},
 {'counter': 5071}, {'counter': 4074}, {'counter': 15355}, {'counter': 16520},
 {'counter': 13850}, {'counter': 18639}, {'counter': 22640}, {'counter': 13962},
 {'counter': 14354}, {'counter': 10945}, {'counter': 10330}]

所以我想要的只是值而不是显示的关键名称计数器,所以我可以计算出第95个百分点,执行以下操作:

for i in a:
  print np.percentile(map(int,i),95)

2 个答案:

答案 0 :(得分:0)

如果我理解你,你想要摆脱标记 所以试试这个:

var ch = db.bastion.find( { },{ 'counter': 1, '_id': False }; ch.forEach( function(doc) {print(doc.counter);});

这将为您提供明确的价值

答案 1 :(得分:0)

有一个将百分位运算符添加到MongoDB聚合框架的票证。

https://jira.mongodb.org/browse/SERVER-7463

发布后,您将能够完全在服务器端完成。

现在,就像hgoebl建议的那样,你必须在客户端做这件事,或者使用map-reduce。

a = db.bastion.find( { }, { 'counter': 1, '_id': False } ))))

np.percentile([x['score'] for x in a], 95)