码迷,mamicode.com
首页 > 数据库 > 详细

浅析mongodb(基于python,linux)

时间:2015-10-22 19:00:52      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:

将数据导入本地mongo中
mongoimport --db test --collection restaurants --drop --file primer-dataset.json
如果本地mongo数据库中已经有了test 数据库,上面的命令会先删除之前的数据然后再导入新的数据
在Linux/OS X 安装pymongo
pip install pymongo

插入数据:

# test.py
from pymongo import MongoClient
client = MongoClient() # 如果不指明则默认连接本地的27017端口
db = client.test # db 代表了mongo的test数据库
table = db.person # 如果test中没有person这个表,MongoDB会创建一个Person

#mongo中存储的数据类似json对象
from datetime import datetime
data = {
"name": "Jack",
"sex": "男",
"Age": 20,
"birth": datetime.strptime("1995-12-23", "%Y-%m-%d"),
"hobby": ["football", "basketball"],
"grades":{
"grade": "A"
"score": 80
}
"detail": [
{"father": "xxxx", "mather": "ffffff"}
{"father": "country", "mather": "God"}
]
}
p1 = table.insert_one(data)
#mongodb 会自动默认添加一个_id的域
print people.inserted_id
# 插入多条数据可以使用insert_many,insert_many 有默认参数ordered=True
p2 = table.insert_many({"name": i} for i in range(3))
print p2.inserted_ids

查询数据:
person = table.find() #查找person表的所有信息
person = table.find({"Age":20}) #查询年龄是20的person
person = table.find({"Age":20, "detail.father": "country"}) #查询年龄是20并且father是country的person
person = table.find({"grades.score": {"$gt": 70}}) #查询分数大于70的person
person = table.find({"$or": [{"sex": "女"}, {"grades.grade": "A"}]}) #查询性别为女或者成绩为A
person = table.find().sort( [ ("Age", pymongo.ASCENDING), ("grades.score", pymongo.DESCENDING) ] ) #查询person表所有记录并先按照年龄升序,然后按分数降序

select = {"birth": {"$lt": datetime.now()}}
group = {"_id": "$grades.grade", "count": {"$sum": 1}}
match = dict(select, **{"hobby": "football"})
pipeline = [
{"$match": match}, # 匹配条件
{"$unwind": "$grades"} #要以grades中的grade为分组条件要首先把grades查询解析出来
{"$group": group}, #分组条件
{"$limit": 10} # 限制查询条数为10
]
person = table.aggregate(pipeline)

当表的名字不固定是个变量的时候,获取table通过
table = db["person_%s" % variable] 这种方式

浅析mongodb(基于python,linux)

标签:

原文地址:http://www.cnblogs.com/lixiaodi/p/4901893.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!