参考文档:

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篇——增删改查的更多相关文章

  1. python 学习分享-实战篇增删改查作业

    一大波函数来袭 作业要求: 1本次作业通过空格及逗号,将文件拆分成列表,在通过判断add.del.update.select等关键字,来判断用户执行的是哪种命令,根据不同的命令调用不同的函数去处理. ...

  2. python学习之-成员信息增删改查

    python学习之-成员信息增删改查 主要实现了成员信息的增加,修改,查询,和删除功能,写着玩玩,在写的过程中,遇到的问题,旧新成员信息数据的合并,手机号和邮箱的验证,#!/usr/bin/env p ...

  3. EF学习笔记-1 EF增删改查

    首次接触Entity FrameWork,就感觉非常棒.它节省了我们以前写SQL语句的过程,同时也让我们更加的理解面向对象的编程思想.最近学习了EF的增删改查的过程,下面给大家分享使用EF对增删改查时 ...

  4. JDBC基础学习(一)—JDBC的增删改查

    一.数据的持久化     持久化(persistence): 把数据保存到可掉电式存储设备中以供之后使用.大多数情况下,数据持久化意味着将内存中的数据保存到硬盘上加以固化,而持久化的实现过程大多通过各 ...

  5. mybatis学习(五)——增删改查及自增主键的获取

    一.mybatis的增删改查 1.修改hotelMapper接口 package com.pjf.mybatis.dao; import com.pjf.mybatis.po.Hotel; publi ...

  6. MVC学习-用EF做增删改查

    在做增删改查先,先介绍几个知识点: 1.代理类 在将对象方法EF数据上下文时,EF会为该对象封装 一个代理类对象, 同时为该对象的每一个属性添加一个标志:unchanged, 当对该对象某个属性进行操 ...

  7. python基础学习之类的属性 增删改查

    类中的属性如何在类外部使用代码进行增删改查呢 增加.改变: setattr内置函数以及 __setattr__魔法方法 class A: aaa = '疏楼龙宿' a = A() setattr(a, ...

  8. TP5学习基础一:增删改查小demo

    ①TP5--增删改查简单的demo 我先吐槽一下:因为工作需要研究tp5,去官网看了一下哎呦,资源挺多挺全啊!然后下载唯一免费的官方教程,我曹pdf打开533页.讲的很细但是开发能等看完才做吗?看到精 ...

  9. MongoDB学习day02--数据库增删改查

    (window系统,在cmd命令提示符中使用) 一.数据库使用 管理mongodb数据库:mongo,连接本地数据库,或mongo 127.0.0.1:27017,连接其他服务器:mongo  ip: ...

随机推荐

  1. 面向对象设计模式纵横谈:Builder 生成器模式(笔记记录)

    Builder模式的缘起 假设创建游戏中的一个房屋House设施,该房屋的构建由几个部分组成,且各个部分要富于变化. 如果使用最直观的设计方法,每一个房屋部分的变化,都将导致房屋构建的重新修正…… 动 ...

  2. Santa Claus and a Place in a Class

    /* Santa Claus is the first who came to the Christmas Olympiad, and he is going to be the first to t ...

  3. Laravel 日期时间处理包 Carbon 的应用

    在编写 PHP 应用时经常需要处理日期和时间,这篇文章带你了解一下 Carbon – 继承自 PHP DateTime 类的 API 扩展,它使得处理日期和时间更加简单.Laravel 中默认使用的时 ...

  4. 1. Install Git and GitExtension

    Install Git Step 1:   Run

  5. 交互神器-最好用的Mac原型设计工具

    市场上有着大量的开发和设计工具支持在Mac上安装使用,今天给大家强烈推荐一款Mac上的原型设计工具-Mockplus,原型工具在产品开发设计中是必不可少的,无论是现在非常火的小程序设计,还是网页设计, ...

  6. org.json

    org.json很经典.能解析json和序列化List.Map为json,但是不能自动填充bean.不依赖其它架包. 直接上代码: import java.util.ArrayList; import ...

  7. apicloud管理

    以下所有操作都是指“apicloud”平台下的管理: 1. 一定要记得备份证书.证书不是因为你记得别名和密码就能还原的.因为apicloud是服务器session存数据,千万不要打开多个app操作页面 ...

  8. vue组件介绍

    https://www.cnblogs.com/Leo_wl/p/5863185.html vue.js说说组件   什么是组件:组件是Vue.js最强大的功能之一.组件可以扩展HTML元素,封装可重 ...

  9. 2018.10.19 NOIP训练 游戏问题(分组背包)

    传送门 分组背包经典问题. 令f[i][j]f[i][j]f[i][j]表示前iii组花费为jjj的最优值. g[i][j]g[i][j]g[i][j]表示前iii组,第iii组已经支付了平台费用的最 ...

  10. composer 安装扩展失败的决绝方法

    https://getyii.com/topic/32