参考文档:

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. HDU_1022

    题目: As the new term comes, the Ignatius Train Station is very busy nowadays. A lot of student want t ...

  2. How to Set Up an Rsync Daemon on Your Linux Server

    Introduction This tutorial will take you through setting up an rsync daemon on your Linux server. Yo ...

  3. IE8以下支持css3 border-radius渲染方法

    这两天在做个集团网站,web前端妹子技术水平不咋样,写个web和wap 真够费劲的,对之前流行的H5和css3 响应式看来不太会用,扔给我一个半成品~~·非说各种canvas和border-radiu ...

  4. 泛型约束where条件的使用(可以通过类型参数动态反射创建实例)

    定义抽象的人类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...

  5. jquery validate 之多tab页同时校验问题

    1.设置多tab页同时校验: $("form").validate({ignore: ":hidden", ignore: ""}); 由于 ...

  6. C++对象拾遗

    #include <iostream.h> #include <string.h> //using namespace std; class A { public:     A ...

  7. [笔记]python

    配置python apt install python2.7 python3 apt install python-bs4 python3-bs4 apt install virtualenv apt ...

  8. SPSS-比较均值-独立样本T检验 案例解析

    在使用SPSS进行单样本T检验时,很多人都会问,如果数据不符合正太分布,那还能够进行T检验吗?而大样本,我们一般会认为它是符合正太分布的,在鈡型图看来,正太分布,基本左右是对称的,一般具备两个参数,数 ...

  9. 2) 下载Maven

    http://maven.apache.org/ http://maven.apache.org/download.cgi Maven 3.3.3 (Binary tar.gz) Maven 3.3. ...

  10. VS2013支持多字节的方法

    参考链接: https://jingyan.baidu.com/article/6181c3e06ab30f152ff1534d.html