2,MongoDB之增删改查及pymongo的使用
本章我们来学习一下关于 MongoDB的增删改查
一.MongoDB操作 之 原生ORM,根本不存在SQL语句
创建数据库:这里和一般的关系型数据库一样,都要先建立一个自己的数据库空间
是的,MongoDB设计的比较随意,没有就认为你是在创建,use LuffyCity_Com是不存在的,所以MongoDB就认为你是要创建并使用
这个概念一定要记清楚哦,MongoDB中如果你使用了不存在的对象,那么就等于你在创建这个对象哦
使用了不存在的对象,就代表创建对象,我们使用这一谬论创建一张表(Collection)试试
看来真的不是谬论,真的成功的创建了一个Oldboy的Collection
那么接下来就是在表(Collection)中添加一条数据了,怎么添加呢?
二.MongoDB 之 插入数据(insert insertOne insertMany) 之 Collection 点儿出一切操作 之 insert
insert:插入一条或者多条数据,需要带有允许插入多条的参数,这个方法目前官方已经不推荐喽
db.Oldboy.insert({"name":"DragonFire","age":20})
insertOne: 插入一条数据,官方推荐
我们可以看出来两种方法的返回值截然不同对吧
insertMany:插入多条数据,无需参数控制,官方推荐
这就是我们向LuffyCity_Com.Oldboy中插入了多条数据:
[{
"name":"DragonFire",
"age":20
},
{
"name":"WuSir",
"age":19
}]
这里留下一个数据类型的悬念
插入完成就要查询
三.MongoDB 之 查询数据(find findOne)
find() 无条件查找:将该表(Collection)中所有的数据一次性返回
db.Oldboy.find({name:"WuSir2b"}) 条件查找:name等于WuSir2b的数据,这里会返回多条结果
说到这里,不禁要问一下:"_id":ObjectId("乱七八糟一道对看着毫无关系的一对字符串") 是什么,我们插入的时候并没有一个字段(Field)并没有_id这个,
对了这就是MongoDB自动给我们添加到系统唯一标识"_id" 是一个ObjectId 类型,我们会在数据类型中第一个说到他
findOne()无条件查找一条数据,默认当前Collection中的第一条数据
findOne({age:19}) : 条件查找一条age等于19的数据,如有多条数据则返回更靠前的数据
查询数据的时候,发现了有些数据出现错误了,要修改怎么办呢?
四.MongoDB 之 修改数据(update updateOne updateMany) 之 跟insert一样,不推荐update的写法
update({"name":"DragonFire"},{$set:{"age":21}}):根据条件修改该条数据的内容
把name等于DragonFire中的age改为21,这里要注意的是({"条件"},{"关键字":{"修改内容"}}),其中如果条件为空,那么将会修改Collection中所有的数据
关于$set关键字的解释就是,本节最后再说,留个悬念
updateOne({"age":19},{$set:{"name":"WSSB"}}):根据条件修改一条数据的内容,如出现多条,只修改最高前的数据
把age等于19的所有数据中第一条数据的name改为WSSB
updateMany({"age":19},{$set:{"name":"pig_qi"}}):根据条件修改所有数据的内容,多条修改
把age等于19的所有数据中的name改为WSSB
上述中有一个$set的悬念,这个悬念呀,可能要留到再往后一些了
但是$set:{"name":"WSSB"}我还是要解释一下: $set 是update时的关键字,表示我要设置name属性的值为"WSSB"
那么我们之前说过MongoDB的灵活性,没有就代表我要创建,所以说如果该条Documents没有name属性,他就会自动创建一个name属性并且赋值为"WSSB"
更改了半天,我觉得,这些数据我都不想要了,该怎么办呢?
四.MongoDB 之 删除数据(remove)
remove({}):无条件删除数据,这里要注意了,这是删除所有数据,清空Collection
当然了,我现在还不会操作,你看到的截图是我全部都写完之后的截图
如果你的数据全没了,那么请再练习一次insertMany([{"name":"DragonFire"}])吧,你多练习一次,总比马上忘记要强吧
remove({"name":"DragonFire"}) : 条件删除name等于"DragonFire"的所有Document
那么到这里呢,增删改查就已经完事儿了
pymongo
import json
import pymongo from bson import ObjectId mongoclient = pymongo.MongoClient(host="127.0.0.1", port=27017)
MongoDB = mongoclient["db1"] # 查询
res = MongoDB.s1.find()
for i in res:
print(i)
i["_id"] = str(i.get("_id"))
print(i.get("_id"), type(i.get("_id")))
s = json.dumps(i) # res = MongoDB.s1.find_one({}, {'_id': 0}) # res = list(MongoDB.s1.find({'id': 1}, {'_id': 0}))
res = MongoDB.s1.find_one({'age': 44}) # 增加
# res = MongoDB.s1.insert_one({'id': 1, 'name': 'tabai', 'age':55}) # res = MongoDB.s1.insert_many([{'id': 1, 'name': 'tabai', 'age':55},{'id': 2, 'name': 'jinxing', 'age':44}]) # 修改
# res = MongoDB.s1.update_one({'age': 55}, {'$set': {'name': 'white'} }) # res = MongoDB.s1.update_many({'age': 44}, {'$set': {'name': 'gold_star'}}) # 删除
# res = MongoDB.s1.delete_one({'id':1})
# print(res) # sort limit skip # res = list(MongoDB.s1.find({}).limit(5).skip(2)) # res = list(MongoDB.s1.find({}).sort('age', pymongo.DESCENDING).limit(5).skip(2))
# res = list(MongoDB.s1.find({}).sort('age', pymongo.ASCENDING).limit(5).skip(2)) # res = MongoDB.s1.find_one({'_id': ObjectId('5c3edd8d51d50c2bb87e16c4')}) print(res)
2,MongoDB之增删改查及pymongo的使用的更多相关文章
- python操作三大主流数据库(8)python操作mongodb数据库②python使用pymongo操作mongodb的增删改查
python操作mongodb数据库②python使用pymongo操作mongodb的增删改查 文档http://api.mongodb.com/python/current/api/index.h ...
- python 全栈开发,Day124(MongoDB初识,增删改查操作,数据类型,$关键字以及$修改器,"$"的奇妙用法,Array Object 的特殊操作,选取跳过排序,客户端操作)
一.MongoDB初识 什么是MongoDB MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介 ...
- Java连接MongoDB进行增删改查
1.导入必须的包: 详情看项目:http://pan.baidu.com/s/1cvDAOY 2.通过Myeclipse创建WEB项目 3. 3.bean:创建实体类 package com.bean ...
- MongoDB的增删改查 转
MongoDB的增删改查 (黎明你好原创作品,转载请注明) MongoDB中数据的基本单元叫做文档,采用json的键-值的方式.多个键及其关联的值有序的存放在一起变是文档.类似于编程语言中的键值关系. ...
- Java实现mongodb原生增删改查语句
Java实现mongodb原生增删改查语句 2018-03-16 自动化测试时,需校验数据库数据,为了快速自动化,在代码中用原生增删改查语句操作mongodb 结构 代码 0 pom.xml < ...
- Scala对MongoDB的增删改查操作
=========================================== 原文链接: Scala对MongoDB的增删改查操作 转载请注明出处! ==================== ...
- C# 对MongoDB 进行增删改查的简单操作
C# 对MongoDB 进行增删改查的简单操作 下面演示下C#操作MongoDB驱动的简单的增删改查代码 运用到的MongoDB支持的C#驱动,当前版本为1.6.0 1,连接数据库 /// & ...
- SpringBoot操作MongoDB实现增删改查
本篇博客主讲如何使用SpringBoot操作MongoDB. SpringBoot操作MongoDB实现增删改查 (1)pom.xml引入依赖 <dependency> <group ...
- MongoDB之增删改查(一)
本文主要介绍MongoDB数据库增删改查操作. 增 mongoDB和其它关系型数据库一样,通过insert来添加数据到集合中去. db.collectionName.insert(内容) 显示数据库中 ...
随机推荐
- 创建Gradle工程出现Could not install Gradle distribution from 'https://services.gradle.org/distributions/gradleXX'.问题解决
在 Eclipse EE Oxygen 中创建 Gradle Project的时候 出现如下错误: org.gradle.tooling.GradleConnectionException: Coul ...
- 【CSS】等高布局
1. 负margin: margin-bottom:-3000px; padding-bottom:3000px; 再配合父标签的overflow:hidden属性即可实现高度自动相等的效果. ...
- PS:将一个图片变成圆形
1.选择一张正方形图片并放置到PS软件中 2.选择“选框工具”->右击选择"椭圆选框工具” 3.画出你要圆形内的范围: 4.选择两种方式中的一种,实际上效果是一毛一样的 5.右下角就会 ...
- git(github)常用命令
安装git sudo apt-get install git 显示git版本 git version 显示system属性,对应为/etc/gitconfig文件的内容 git config --sy ...
- window下编译ffmpeg
网上关于编译ffmpeg的帖子很多,我也尝试了很多次,但是很多都过不了,一部分原因是版本问题,还有就是有的路劲没说的太明白导致的,经过一天的摸索,最终编译好了,下面把编译方式写下来,希望对看到帖子的人 ...
- framework7对日历的一些效果处理
现在的要求是日历中要区分已打卡和未打卡的显示,并且当月只显示当月的日历状态,其他月份不显示状态,并且打卡的日期不能大于当日 实现代码(精确到天): HTML: <div class=" ...
- 20145238-荆玉茗 《Java程序设计》第7周学习总结
20145238 <Java程序设计>第7周学习总结 教材学习内容总结 第13章时间与日期 13.1.1 ·即使标注为GMT(格林威治时间),实际上谈到的的是UTC(Unix时间)时间. ...
- 关于IDataReader.GetSchemaTable的一些事情
http://stackoverflow.com/questions/1574492/how-does-getschematable-work The implementation of IDataR ...
- NVIDIA CUDA Library Documentation
http://developer.download.nvidia.com/compute/cuda/4_1/rel/toolkit/docs/online/index.html 英伟达CUDA库说明文 ...
- 流形(Manifold)初步
原文链接 欧几里得几何学(Euclidean Geometry) 两千三百年前,古希腊数学家欧几里得著成了<几何原本>,构建了被后世称为“欧几里得几何学”的研究图形的方法.欧几里得创立了当 ...