mongoDB-pymongo-入门
来源:互联网 发布:淘宝网店转让合法吗 编辑:程序博客网 时间:2024/06/04 19:43
1.认识mongodb
找了很多资料,很多博客已经讲mongodb的特点说的很清楚了,总的来说,它是非关系型数据库中最像关系数据库的。我主要用python,而mongodb所用的python接口叫做pymongo。安装和python接口请百度其他博客。本文主要介绍shell及python环境下的入门操作。
2.连接mongodb
def add_city(db): # Changes to this function will be reflected in the output. # All other functions are for local use only. # Try changing the name of the city to be inserted db.cities.insert({"name" : "Chicago"})def get_city(db): return db.cities.find_one()def get_db(): # For local use from pymongo import MongoClient client = MongoClient('localhost:27017') # 'examples' here is the database name. It will be created if it does not exist. db = client.examples return dbdef get_all_collection(db): return db.collection_names()if __name__ == "__main__": # For local use db = get_db() # uncomment this line if you want to run this locally add_city(db) print get_city(db)
3.查询
在pymongo和mongo shell中,通过find,以及findOne来实现查询操作,传入的参数为一个字典,字典可以有多个key,来进行多项查询。
city = db.cities.find_one({"name": "New York", "country":"America"})city = db.cities.find({"name": "New York", "country":"America"})
4.投影
在很多情况下,我们并不需要输出结果那么多,我们只需要记录的特定字段,那么这个时候就用到了投影,projection。
query = {"name": "New York", "country":"America"}projection = {"_id": 0, "name": 1}results = db.cities.find(query, projection)
5.插入一条记录
有两种方法来增加记录,第一种,在python中创建一个字典,然后把这个字典通过insert方法传入
for a in autos: db.myautos.insert(a) # a must be a python dictionary
使用现成的mongoimport来把json文件直接import 进入mongoimport -d examples -c=macx –file /home/angelfish/Desktop/test.json
6.范围查询
“
def range_query(): query = { 'foundingDate':{'$gte':datetime(2000,1,1,0,0)}} return query
def in_query(): query = {"manufacturer":"Ford Motor Company", "assembly" :{"$in": ['Germany', 'United Kingdom', 'Japan']}} return query
7.更新
方法一:通过db.collection.save,这里需要注意的是,如果这条记录已经有了_id字段,那么就跟新这条记录,如果没有_id字段,那个将创建新的记录来保存这条记录
from pymongo import MongoClientimport pprintclient = MongoClient("mongodb://localhost:27017")db = client.examplesdef main() city = db.cities.find_one({"name": "New York", "country":"America"}) city["isoCountryCode"] = "DEU" db.cities.save(city)if __name__ == "__main__": main()
方法二:通过update方法,update方法有两个输入,第一个输入是匹配记录,针对匹配到的记录进行操作,第二个是输入是包含”$set”的方法,针对上面匹配到记录进行跟新值,注意如果原来就有值,则跟新成新的值,如果原来没有这个字段,则创建新的字段。
def find() city = db.cities.update({"name": "New York", "country":"America"}, {"$set":{"isoCountryCode":"DEU"} })
既然提到了
def find() city = db.cities.update({"name": "New York", "country":"America"}, {"$unset":{"isoCountryCode":""} })
注意上面用$set跟新默认都是只针对匹配到的第一条记录进行跟新,如果需要对多条记录跟新,那么就得加上参数。
def find() city = db.cities.update({"name": "New York", "country":"America"}, {"$unset":{"isoCountryCode":""} }, multi=True)
8.删除
删除一条记录,通过remove命令,这个命令与find命令非常类似,讲匹配到的记录删除。
db.cities.remove( { "name": { "$exitst": 0 } } )
9. 常用shell命令
1、查询本地所有数据库名称
> show dbs;
2、切换至指定数据库环境(若无指定的数据库,则创建新的库)
> use mydb;
3、查询当前库下的所有聚集集合collection(相当于table)
> show collections;
4、创建聚集集合
> db.createCollection('mycollection');
5、查询聚集集合中数据条数
> db.mycollection.count();
6、插入数据
> db.mycollection.insert({'username':'xyz_lmn','age':26,'salary':120});
往’mycollection’聚集集合中插上一条数库,name为’xyz_lmn’,age为’26’,salary为’120’
7、查询age等于26的数据
> db.mycollection.find({"age":26});
8、查询salary大于100的数据
> db.mycollection.find({salary:{$gt:100}});
9、查询age小于30,salary大于100的数据
> db.mycollection.find({age:{$lt:30}},{salary:{$gt:100}});
10、查询salary小于40或salary大于200的数据
> db.mycollection.find({$or: [{salary: {$lt:40}}, {salary: {$gt:200}}]});
11、查询指定列的数据
> db.mycollection.find({},{age:1,salary:1});
1表示显示此列的意思,也可以用true表示
12、查询username中包含’e’的数据
> db.mycollection.find({username:/e/});
13、查询以a打头的数据
> db.mycollection.find({username:/^a/});
14、查询age列数据,并去掉重复数据
> db.mycollection.distinct('age');
15、查询前10条数据
> db.mycollection.find().limit(10);
16、查询1条以后的所有数据
> db.mycollection.find().skip(1);
17、查询第一条数据
> db.mycollection.findOne();
18、查询结果集的记录数(查询salary小于40或大于100的记录数)
> db.mycollection.find({$or: [{salary: {$lt:40}}, {salary: {$gt:100}}]}).count();
19、按salary升序排序
> db.mycollection.find().sort({salary:1});
按照salary字段升序排序
20、降序
> db.mycollection.find().sort({salary:-1});
- mongoDB-pymongo-入门
- PyMongo--非关系型数据库mongodb入门(一步一步 版)
- Pymongo Tutorial & Pymongo入门教
- python mongodb(pymongo)
- Pymongo and Mongodb
- mongodb python driver--pymongo
- 使用Pymongo 管理MongoDB
- python MongoDB+pymongo+Tornado
- PyMongo使用入门(一)
- PyMongo使用入门(二)
- PyMongo使用入门(三)
- PyMongo使用入门(四)
- PyMongo使用入门(五)
- PyMongo使用入门(六)
- PyMongo使用入门(七)
- Twist+pyMongo+MongoDB测试结果
- MongoDB的Python接口 PyMongo
- 利用pymongo操作mongoDB数据库
- MVC下拉控件绑定数据
- 子进程的异步等待方式
- 内核启动分析
- Hbase之表的设计
- iOS学习笔记-078.核心动画04——CATransition(转场动画)
- mongoDB-pymongo-入门
- C++primer-1
- 值得收藏的50个学习C语言的源代码网站
- html学习
- Dockerfile中的Shell风格与JSON风格对比及SHELL指令详解
- java字符串操作:匹配、替换、萃取、分割拆分
- MySQL插入数据时中文乱码问题
- Leetcode 513. Find Bottom Left Tree Value
- linux根文件系统