• 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)
    

      

  • 相关阅读:
    论自己电脑如何搭建服务器
    nodejs + express + art-template + mongodb简单项目
    npm和yarn使用
    Linux内核编译
    Linux 网络编程
    Linux进程管理
    LeetCode1576. 替换所有的问号
    LeetCode392. 判断子序列
    LeetCode674. 最长连续递增序列
    剑指 Offer 48. 最长不含重复字符的子字符串
  • 原文地址:https://www.cnblogs.com/similarface/p/5608987.html
Copyright © 2020-2023  润新知