本文整理汇总了Python中bson.SON.keys方法的典型用法代码示例。如果您正苦于以下问题:Python SON.keys方法的具体用法?Python SON.keys怎么用?Python SON.keys使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类bson.SON
的用法示例。
在下文中一共展示了SON.keys方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: MRsimple
# 需要导入模块: from bson import SON [as 别名]
# 或者: from bson.SON import keys [as 别名]
def MRsimple(collection, FunMap, FunReduce=None, query={}, out={"replace": 'mr_tmp'}, finalize=None,
scope={}, sort=None, jsMode=False, verbose=1):
""" simplified generic Map Reduce
see: http://docs.mongodb.org/manual/reference/method/db.collection.mapReduce/
returns (MR response object, results collection or results list if out={"inline":1})
Reduce function defaults to one that increments value count
optimize by sorting on emit fields
see: http://edgystuff.tumblr.com/post/7624019777/optimizing-map-reduce-with-mongodb
docs.mongodb.org/manual/reference/method/db.collection.mapReduce/#db.collection.mapReduce
sort i.e: sort= { "_id":1 }
jsMode should be False if we expect more than 500K dictinct ids
"""
if len(out.viewkeys()) > 1:
command = MRCommand_(out)
out = SON([(command, out[command]), ('db', out.get('db')),
('nonAtomic', out.get('nonAtomic', False))])
#nonAtomic not allowed on replace
FunMap = Code(FunMap, {})
if FunReduce is None:
FunReduce = u"""function (key, values) {var total = 0; for (var i = 0;
i < values.length; i++) { total += values[i]; } return total;}
"""
FunReduce = Code(FunReduce, {})
if verbose > 2:
print "Start MRsimple collection = %s"\
"query = %s\nMap=\n%s\nReduce=\n%s\nFinalize=%s\nscope=%s sort=%s" \
% tuple(map(str, (out, query, FunMap, FunReduce, finalize, scope, sort)))
if sort:
sort = SON(sort)
r = collection.map_reduce(FunMap, FunReduce, out=out, query=query,
finalize=finalize, scope=scope, sort=sort, full_response=True)
if verbose > 1:
print "End MRsimple collection=%s, query=%s\nresulsts=\n %s"\
% (collection.name, str(query), str(r))
if 'db' in out.viewkeys():
#@note: can be dict or SON, either way it has property viewkeys
results = collection.database.connection[r['result']['db']][r['result']['collection']]
else:
results = r['results'] if out.keys()[0] == 'inline' else collection.database[r['result']]
#@note: results is a list if inline else a collection
return r, results