python连接mongo需要安装必要包pymongo:
conda install pymongo
pip install pymongo
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
dblist = myclient.list_database_names()
print(dblist)
可以获取到mongo中的所有数据库名字,说明成功连接mongo:
mydb = myclient["database_name"]
注意: 在 MongoDB 中,数据库只有在内容插入后才会创建! 就是说,数据库创建后要创建集合(数据表)并插入一个文档(记录),数据库才会真正创建。
mydb = myclient["database_name"]
mycol = mydb["one"]
注意: 在 MongoDB 中,集合只有在内容插入后才会创建! 就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。
集合中插入文档使用 insert_one()
方法,该方法的第一参数是字典 name => value 对。insert_one() 方法返回 InsertOneResult 对象,该对象包含 inserted_id 属性,它是插入文档的 id 值。如果我们在插入文档时没有指定 _id,MongoDB 会为每个文档添加一个唯一的 id。
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["py_db"]
mycol = mydb["one"]
x = mycol.insert_one({
'name': 'Jenny',
'age': 33})
print(x)
print(x.inserted_id)
集合中插入多个文档使用 insert_many()
方法,该方法的第一参数是字典列表。
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["py_db"]
mycol = mydb["one"]
mylist = [
{ "name": "Tim", 'age': 13 },
{ "name": "Kai", 'age': 24},
{ "name": "Steven", 'age': 31},
]
x = mycol.insert_many(mylist)
我们也可以自己指定 id插入:
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["py_db"]
mycol = mydb["one"]
x = mycol.insert_one({"_id": 1, "name": "Kis", 'age': 29 },)
find()
方法可以查询集合中的所有数据,类似 SQL 中的 SELECT * 操作。
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["py_db"]
mycol = mydb["one"]
print(mycol.find())
for i in mycol.find():
print(i)
我们可以使用 find_one()
方法来查询集合中的一条数据。
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["py_db"]
mycol = mydb["one"]
print(mycol.find_one({'name': 'Jenny'}))
获取一条数据的具体属性,后边加上['name']
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["py_db"]
mycol = mydb["one"]
print(mycol.find_one({'name': 'Jenny'})['name'])
返回指定条数记录
如果我们要对查询结果设置指定条数的记录可以使用 limit()
方法,该方法只接受一个数字参数。
返回 2条文档记录:
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["py_db"]
mycol = mydb["one"]
for i in mycol.find().limit(2):
print(i)
查询的条件语句中,我们还可以使用修饰符。
MongoDB中条件操作符有:
举个栗子:
查询年龄大于30的数据:
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["py_db"]
mycol = mydb["one"]
for i in mycol.find({'age': {'$gt': 30}}):
print(i)
我们还可以使用正则表达式作为修饰符。
正则表达式修饰符只用于搜索字符串的字段。
以下实例用于读取 name 字段中第一个字母为 “J” 的数据,正则表达式修饰符条件为 {“$regex”: “^J”} :
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["py_db"]
mycol = mydb["one"]
for i in mycol.find({'name': {"$regex": "^J"}}):
print(i)
在 MongoDB 中使用 update_one()
方法修改文档中的记录。该方法第一个参数为查询的条件,第二个参数为要修改的字段。
如果查找到的匹配数据多于一条,则只会修改第一条。
举个栗子,把Jenny年龄改为13:
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["py_db"]
mycol = mydb["one"]
mycol.update_one({'name': "Jenny"}, {'$set': {'age': 13}})
update_many()
方法修改文档中的记录。该方法第一个参数为查询的条件,第二个参数为要修改的字段。
如果查找到的匹配数据多于一条,则会修改所有的。
我们可以使用 delete_one()
方法来删除一个文档,该方法第一个参数为查询对象,指定要删除哪些数据。可以使用 delete_many()
方法来删除多个文档,该方法第一个参数为查询对象,指定要删除哪些数据。
举个栗子,删除所有13岁的数据:
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["py_db"]
mycol = mydb["one"]
mycol.delete_many({'age': 13})
delete_many()
方法如果传入的是一个空的查询对象,则会删除集合中的所有文档。
使用 drop()
方法来删除一个集合。
mycol_name.drop()//mycol_name为要删除的集合名字。
sort()
方法可以指定升序或降序排序。
sort()
方法第一个参数为要排序的字段,第二个字段指定排序规则,1 为升序,-1 为降序,默认为升序。
mydoc = mycol.find().sort("age")
for x in mydoc:
print(x)