pymongo学习第1篇——增删改查
参考文档:
1、https://docs.mongodb.org/getting-started/python/
2、http://api.mongodb.org/python/current/api/pymongo/index.html
# -*- coding: utf-8 -*-
import sys
from datetime import datetime
from pymongo import MongoClient
import pymongo
import re def main():
'''connect to database.
client = MongoClient()等价于client = MongoClient("localhost:27017")
'''
client = MongoClient()
db = client.demo
coll = db.address '''insert data.
insert_one()
insert_many()
'''
insertResult = coll.insert_one({
"account": "PONPON7@163.com",
"password": "",
"birth": datetime.strptime("1990-09-22", "%Y-%m-%d"),
"score": 102,
"address": {"city": ["beijing", "wuxi", "chengdu"], "country": "China"},
"articles": [{"title": "mongo常用操作小结", "author": "xiaomaque"},
{"title": "mysql小结", "author": "ponpon7"}]
})
print(insertResult.inserted_id)
elements = [{"account": "ponpon7", "password": "afi89^^R", "birth": datetime.strptime("1986-12-12", "%Y-%m-%d"), "score": 172}, {"account": "liudehua", "password": "wangqingshui", "birth": "", "score": 18}]
coll.insert_many(elements) '''find or query data.
cursorAll: 查找score<140的数据,并且按account从小到大, score从大到小排序. $lt: less than<; $gt: greater than>
cursorOr: logical OR
cursorRegex: 通过正则表达式查找
'''
cursorAll = coll.find({"score": {"$lt": 140}}).sort([
("account", pymongo.ASCENDING),
("score", pymongo.DESCENDING)
])
for document in cursorAll:
print("All document: {}".format(document)) cursorRegex = coll.find({"account": re.compile('p', re.I)})
for document in cursorRegex:
print("Regex document: {}".format(document)) cursorOr = coll.find({"$or": [{"score": 172}, {"address.country": "China"}]})
for document in cursorOr:
print("score is 172 Or country is China: {}".format(document)) '''update data & replace data.
update_one(filter, update, upsert=False, bypass_document_validation=False)
upsert: 如果为True,查不到符合filter的文档时会插入数据,默认为false
'''
updateResult = coll.update_many(
{"account": "wxy@123.com"},
{
"$set": {"score": 129, "address": {"city": ["nanjing"], "country": "China"}},
"$currentDate": {"lastModified": True}
},
# True
)
print("update: matched_count is {}".format(updateResult.matched_count))
print("update: modified_count is {}".format(updateResult.modified_count)) replaceResult = coll.replace_one(
{"account": "wxy@123.com"},
{
"account": "wxy@123.com",
"score": 139,
"address": {"city": ["Paris"], "country": "France"},
}
)
print("replace: matched_count is {}".format(replaceResult.matched_count))
print("replace: modified_count is {}".format(replaceResult.modified_count)) '''remove data.
Attention: delete_many({}) delete all documents
coll.drop() drop a collection
'''
deleteResult = coll.delete_many({"birth": datetime.strptime("1990-09-22", "%Y-%m-%d")})
print("remove: deleted_count is {}".format(deleteResult.deleted_count)) if __name__ == '__main__':
main()
pymongo学习第1篇——增删改查的更多相关文章
- python 学习分享-实战篇增删改查作业
一大波函数来袭 作业要求: 1本次作业通过空格及逗号,将文件拆分成列表,在通过判断add.del.update.select等关键字,来判断用户执行的是哪种命令,根据不同的命令调用不同的函数去处理. ...
- python学习之-成员信息增删改查
python学习之-成员信息增删改查 主要实现了成员信息的增加,修改,查询,和删除功能,写着玩玩,在写的过程中,遇到的问题,旧新成员信息数据的合并,手机号和邮箱的验证,#!/usr/bin/env p ...
- EF学习笔记-1 EF增删改查
首次接触Entity FrameWork,就感觉非常棒.它节省了我们以前写SQL语句的过程,同时也让我们更加的理解面向对象的编程思想.最近学习了EF的增删改查的过程,下面给大家分享使用EF对增删改查时 ...
- JDBC基础学习(一)—JDBC的增删改查
一.数据的持久化 持久化(persistence): 把数据保存到可掉电式存储设备中以供之后使用.大多数情况下,数据持久化意味着将内存中的数据保存到硬盘上加以固化,而持久化的实现过程大多通过各 ...
- mybatis学习(五)——增删改查及自增主键的获取
一.mybatis的增删改查 1.修改hotelMapper接口 package com.pjf.mybatis.dao; import com.pjf.mybatis.po.Hotel; publi ...
- MVC学习-用EF做增删改查
在做增删改查先,先介绍几个知识点: 1.代理类 在将对象方法EF数据上下文时,EF会为该对象封装 一个代理类对象, 同时为该对象的每一个属性添加一个标志:unchanged, 当对该对象某个属性进行操 ...
- python基础学习之类的属性 增删改查
类中的属性如何在类外部使用代码进行增删改查呢 增加.改变: setattr内置函数以及 __setattr__魔法方法 class A: aaa = '疏楼龙宿' a = A() setattr(a, ...
- TP5学习基础一:增删改查小demo
①TP5--增删改查简单的demo 我先吐槽一下:因为工作需要研究tp5,去官网看了一下哎呦,资源挺多挺全啊!然后下载唯一免费的官方教程,我曹pdf打开533页.讲的很细但是开发能等看完才做吗?看到精 ...
- MongoDB学习day02--数据库增删改查
(window系统,在cmd命令提示符中使用) 一.数据库使用 管理mongodb数据库:mongo,连接本地数据库,或mongo 127.0.0.1:27017,连接其他服务器:mongo ip: ...
随机推荐
- Js中的this关键字(吉木自学)
研究生毕业答辩完,开始继续为转行努力.小白要奋斗了,加油.本文引自JS核心系列:浅谈函数的作用域. 在一个函数中,this总是指向当前函数的所有者对象,this总是在运行时才能确定其具体的指向, 也才 ...
- Jmeter从一个Reply Message中获取N个参数的值,然后根据这个参数对后面的操作循环N次(ForEach Controller的用法)
假设Reply Message是这样的: <root><result code="0" msg="success" /><m k= ...
- 优质产品需求文档(PRD)写作三大原则
在上一篇文章中有介绍,产品经理的两项主要职责包括:对产品机会进行评估,以及对开发的产品进行评估.而定义即将开发上线的产品,则需要借助产品需求文档,来进行产品的特征和功能描述.PRD文档的写作会因公司. ...
- DB2通用数据库性能调整的常用方法
DB2通用数据库性能调整的常用方法 DB2通用数据库性能调整的常用方法 Agenda 统计值更新--runstats 调整Buffer pool 调整日志缓冲区大小 应用程序堆大小 排序堆大小 ...
- Devexpress VCL Build v2014 vol 14.2.6 发布
终于支持XE8 了.需要这么长时间吗? New Major Features in 14.2 What's New in VCL Products 14.2 Feature Highlights To ...
- 做SEO都需要具备哪些方面的知识
做seo需要了解的基本知识有利于seo工作的进行 一.了解搜索引擎的工作原理 搜索引擎的基本工作原理包括如下三个过程: 1.首先在互联网中发现.搜集网页信息; 2.同时对信息进行提取和组织建立索引库; ...
- 2018.09.29 bzoj3675: [Apio2014]序列分割(斜率优化dp)
传送门 斜率优化dp经典题目. 首先需要证明只要选择的K个断点是相同的,那么得到的答案也是相同的. 根据分治的思想,我们只需要证明有两个断点时成立,就能推出K个断点时成立. 我们设两个断点分成的三段连 ...
- IntelliJ IDEA 2017版 编译器使用学习笔记(二) (图文详尽版);IDE快捷键使用
补充介绍IntellJ 介绍主菜单功能及相关用途: File -------------> 对文件进行操作 Edit ------------> 对文本进行操作 View -------- ...
- momery
reg [7:0] moma [255:0] ;//定义一个位宽为8,浓度为什么256的memory. parameter wordsize = 8; parameter memsize = 256; ...
- (最小生成树) Arctic Network -- POJ --2349
链接: http://poj.org/problem?id=2349 Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 1371 ...