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)