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: ...
随机推荐
- sc start service 1063 1053 错误原因
在进入点函数里面要完成ServiceMain的初始化,准确点说是初始化一个SERVICE_TABLE_ENTRY结构数组,这个结构记录了这个服务程序里面所包含的所有服务的名称和服务的进入点函数,下面是 ...
- windows驱动
DriveEntry() 启动 停止 接口函数 驱动程序名 驱动程序版本号 异常处理 是否运行 声明LPOReceive类型的函数 声明函数指针(外部传进来的回调函数) 存放配置字符串 本机IP 串口 ...
- 【Sikuli】Sikuli 文档
http://sikulix-2014.readthedocs.io/en/latest/index.html
- 用Fiddler抓到的报文Content-Type: application/x-www-form-urlencoded,怎样解析?
抓到的HTTPS请求报文,在报文头中Content-Type: application/x-www-form-urlencoded 报文体为: entrypoint=clientmanagement& ...
- oracle 新建数据库 ,新建用户
net manager 数据库名----电脑名localhost 1521 , 服务名 orcl (oracle 版本不一样, 不同版本不一样,,) 然后测试.. sys 账号登录 新建用 ...
- HTML5 APP应用实现图片上传及拍照上传功能
https://blog.csdn.net/zmzwll1314/article/details/46965663 http://www.cnblogs.com/leo0705/ https://zh ...
- java--多线程编程简介
1.什么时候使用多线程编程 一个任务在正常情况下是按顺序执行的,但是如果当前任务里有多个相似进程块(例如for,while语句),我们就可以考虑把这些代码块抽出来并行运行,无需阻塞 2.实现多线程的几 ...
- Apache Struts 2 Documentation Big Picture
http://struts.apache.org/docs/big-picture.html 1. HttpServletRequest 穿越各个过滤器到达FilterDispatcher(这个已经不 ...
- POJ 2462 / HDU 1154 Cutting a Polygon
就这样莫名其妙的过了,不过可以确定之前都是被精度卡死了.真心受不了精度问题了. 题意:一条直线在一个不规则多边形内的长度,包括边重合部分. 首先计算出所有交点,然后按想x,y的大小进行二级排序. 然后 ...
- Socket常用语法与socketserver实例
1>Socket相关: 1>Socket Families(地址簇): socket.AF_UNIX 本机进程间通信 socket.AF_INET IPV4 socket.AF_I ...