zoukankan      html  css  js  c++  java
  • python操作mongodb之二聚合查询

    #聚合查询
    from pymongo import MongoClient
    db = MongoClient('mongodb://10.0.0.9:27017/').aggregation_example
    #准备数据
    result = db.things.insert_many([{"x": 1, "tags": ["dog", "cat"]},
                                  {"x": 2, "tags": ["cat"]},
                                 {"x": 2, "tags": ["mouse", "cat", "dog"]},
                                   {"x": 3, "tags": []}])
    result.inserted_ids
    '''
    { "_id" : ObjectId("576aaa973e5269020848cc7c"), "x" : 1, "tags" : [ "dog", "cat" ] }
    { "_id" : ObjectId("576aaa973e5269020848cc7d"), "x" : 2, "tags" : [ "cat" ] }
    { "_id" : ObjectId("576aaa973e5269020848cc7e"), "x" : 2, "tags" : [ "mouse", "cat", "dog" ] }
    { "_id" : ObjectId("576aaa973e5269020848cc7f"), "x" : 3, "tags" : [ ] }
    '''
    from bson.son import SON
    #$unwind 解开-后面的变量
    pipeline = [
         {"$unwind": "$tags"},
         {"$group": {"_id": "$tags", "count": {"$sum": 1}}},
         {"$sort": SON([("count", -1), ("_id", -1)])}
     ]
    list(db.things.aggregate(pipeline))
    #使用聚合函数with command
    db.command('aggregate', 'things', pipeline=pipeline, explain=True)
    
    
    """Map/Reduce"""
    from bson.code import Code
    mapper = Code("""
                  function () {
                    this.tags.forEach(function(z) {
                      emit(z, 1);
                    });
                  }
                  """)
    
    reducer = Code("""
                    function (key, values) {
                      var total = 0;
                      for (var i = 0; i < values.length; i++) {
                        total += values[i];
                      }
                      return total;
                    }
                    """)
    result = db.things.map_reduce(mapper, reducer, "myresults")
    for doc in result.find():
        print doc
    

      

  • 相关阅读:
    【Python第九篇】异步IO数据库队列缓存
    【Python第八篇】线程、进程及协程
    【Python第七篇】Socket网络编程
    实验五全部代码,ajax请求
    添加员工
    联级选择
    查询,利用jquery选择器
    列表、表格单选框
    注册
    聊天框
  • 原文地址:https://www.cnblogs.com/similarface/p/5608989.html
Copyright © 2011-2022 走看看