zoukankan      html  css  js  c++  java
  • python操作mongodb之基础操作

    #coding:utf-8
    __author__ = 'hdfs'
    import pymongo
    from pymongo import MongoClient
    client = MongoClient()
    
    client=MongoClient('10.0.0.9',27017)
    #连接mongodb数据库
    client = MongoClient('mongodb://10.0.0.9:27017/')
    #指定数据库名称
    db = client.test_database
    #获取非系统的集合
    db.collection_names(include_system_collections=False)
    #获取集合名
    posts = db.posts
    #查找单个文档
    posts.find_one()
    #给定条件的一个文档
    posts.find_one({"author": "Mike"})
    #使用ID查找需要ObjectID
    from bson.objectid import ObjectId
    post_id='5728aaa96795e21b91c1aaf0'
    document = client.db.collection.find_one({'_id': ObjectId(post_id)})
    import datetime
    new_posts = [{"author": "Mike",
                 "text": "Another post!",
                 "tags": ["bulk", "insert"],
                 "date": datetime.datetime(2009, 11, 12, 11, 14)},
                {"author": "Eliot",
                 "title": "MongoDB is fun",
                 "text": "and pretty easy too!",
                 "date": datetime.datetime(2009, 11, 10, 10, 45)}]
    #插入多条记录
    result = posts.insert_many(new_posts)
    #返回插入的ID
    result.inserted_ids
    #递归集合
    for post in posts.find():
        post
    
    #递归条件集合
    for post in posts.find({"author": "Mike"}):
        post
    
    #文档的记录数
    posts.count()
    
    #区间查询
    d = datetime.datetime(2009, 11, 12, 12)
    for post in posts.find({"date": {"$lt": d}}).sort("author"):
        print post
    #给集合profiles建立索引 唯一索引
    result = db.profiles.create_index([('user_id', pymongo.ASCENDING)],unique=True)
    #查看索引信息
    list(db.profiles.index_information())
    #
    user_profiles = [
    {'user_id': 211, 'name': 'Luke'},
    {'user_id': 212, 'name': 'Ziltoid'}]
    result = db.profiles.insert_many(user_profiles)
    
    #聚合查询
    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)
    

      

  • 相关阅读:
    插入排序—希尔排序(Shell`s Sort)原理以及Java实现
    八大排序算法原理以及Java实现(直接插入排序)
    HTTP与HTTPS的区别
    TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute【转】
    TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议【转】
    中介者模式-Mediator
    命令模式-command
    桥接模式-Bridge
    迭代器模式-Iterator
    组合模式-Composite
  • 原文地址:https://www.cnblogs.com/similarface/p/5608987.html
Copyright © 2011-2022 走看看