Python学习------MongoDB

推荐网址:

菜鸟教程:https://www.runoob.com/mongodb/mongodb-tutorial.html

一、MongoDB简介

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

二、用ipython操作mongoDB的方法

# 切换进入数据库,若没有则创建
use DATABASE_NAME

# 查看当前数据库
db

# 删除数据库,需要进入目标数据库才能删除
db.dropDatabase()

# 创建集合
db.createCollection("collection_name")

# 查看所有集合
show collections

# 删除集合
db.collection.drop()

# 插入文档,如果集合不在该数据库中, MongoDB会自动创建该集合并插入文档。
db.COLLECTION_NAME.insert(document)
# db.collection.insertOne():向指定集合中插入一条文档数据
# db.collection.insertMany():向指定集合中插入多条文档数据

# 更新文档,有update()和save()两个方法
# update()方法用于更新已存在的文档,包括updateOne()和updateMany()
# 格式:db.collection.updateOne(
       <query>,
       <update>,
       {
         upsert: <boolean>,
         multi: <boolean>,
         writeConcern: <document>
       }
    )
# 说明:
    query : update的查询条件,类似sql update查询内where后面的。
    update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
    upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
    multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
    writeConcern :可选,抛出异常的级别。

# save()方法通过传入的文档来替换已有文档。语法格式如下:
# 格式:db.collection.save(
       <document>,
       {
         writeConcern: <document>
       }
    )

# 删除文档deleteOne() 和deleteMany()
# 格式:db.collection.remove(
       <query>,
       {
         justOne: <boolean>,
         writeConcern: <document>
       }
    )
# 说明:
    query :(可选)删除的文档的条件。
    justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
    writeConcern :(可选)抛出异常的级别。

# 查询文档find()和findOne()
# 格式:db.collection.find(query, projection)
# findOne()只返回一个文档。

三、$符号

在MongoDB里,$符号用来比较大小,相当于SQL里面的条件查询

(>) 大于 - $gt
(<) 小于 - $lt
(>=) 大于等于 - $gte
(<= ) 小于等于 - $lte
(!=) 不等于 -$ne
(=) 等于 -$eq

三、用Python操作MongoDB

在shell连接MongoDB的方法以及在shell里操作MongoDB的方法在菜鸟教程里已经写得很详细了,这里就不再写。这里写一写我用python操作MongoDB的学习吧

1、安装库pymongo

pip install pymongo

2、导入库pymongo

from pymongo import mongo_client

3、好了,我们开始操作吧

# 导入库
import pymongo
from pymongo import MongoClient
import datetime

# 实例化这个MongoClient这个类,本机的host为localhost
client = MongoClient(host="192.168.226.130", port=27017)

# 显示有多少个数据库,返回一个列表
client.list_database_names()

# 进入某个数据库,没有的话则创建,返回数据库的对象
db = client.kenny

# 查看数据库的集合,返回一个列表
db.list_collection_names()

# 创建集合 
db.create_collection("kenny_test")

# 进入集合,可以用成员符“.”,也可以用字典的方法,返集合对象
collect = db.kenny_test
collect = db["kenny_test"]

# 插入,若没有_id,则会自动生成一个id,并把这个id作为主键
doc = {"title": "study mongodb", "date": datetime(2018, 1, 1), "user": "kenny", "cost_time": 50}
collect.insert_one(doc)

docs = [
    {"title": "study mongodb", "date": datetime(2018, 1, 1), "user": "lindsey", "cost_time": 10}
    {"title": "study mongodb", "date": datetime(2018, 1, 1), "user": "jon", "cost_time": 20}

]

# 查找所有文档,find方法都是返回一个指针,可迭代找到内容
for i in collect.find():
    print(i)

# 查找第一个文档
print(collect.find_one)

# 返回有几个文档
print(collect.find().count())
# 新版用这个代替,注意里面有filter{},查询全部是为空{}
pirnt(collect.count_documents({}))
pirnt(collect.count_documents({"user": "kenny"}))

# 用find过滤查询,返回一个指针,可迭代查询
collect.find({"user": "kenny"})
collect.find({"user" : "kenny"}).count()

# 用find设置查询条件,key是查询对象,查询的value值是查询条件,条件也是一个字典,这个字典里的key需要是一个$符号,value是具体的对比值
collect.find({"cost_time": {"$gt": 30}})
collect.find({"cost_time": {"$lt": 30}})

# 还可以比较时间
collect.find({"date": {"$lt": datetime.datetime(2018, 5, 2)}})

# 排序,需要给一个key作为排序的标准,sort是一个列表,列表里是元祖,元祖包括key和排序方向
[print(x) for ]x in collect.find(sort=[("cost_time", pymongo.ASCENDING)])  # 升序
[print(x) for ]x in collect.find(sort=[("cost_time", pymongo.DESCENDING)])  # 降序

[print(x) for ]x in collect.find().sort("cost_time", pymongo.ASCENDING)  # 降序
[print(x) for ]x in collect.find().sort("cost_time", pymongo.DESCENDING)  # 降序

# 修改文档,第一个参数是过滤条件,第二个是要修改的内容,用$set添加字段,若存在字段,则覆盖
collect.update_one({"user": "kenny"}, {"$set": {"user": "kenny001"}})
# collect.update_many修改多条文档
# $inc增加,

# 删除文档,删除结果可以用返回的结果的deleted_count方法查看,为0则没成功,为1则删除成功
delete_item = collect.delete_one({"user": "jon"})
print(delete_item.daleted_count)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值