MongoDB --- 02. 基本操作,增删改查,数据类型,比较符,高级用法,pymongo
一.基本操作
. mongod 启动服务端 2. mongo 启动客户端 3. show databses 查看本地磁盘的数据库 4. use 库名 切换到要使用的数据库 5. db 查看当前使用的数据库 6. show tables 查看当前数据库存放在磁盘上的数据表 7. use 新库名 创建数据库, 当前创建的数据库没有存放在磁盘中 8. db.tablename 新表名 创建数据表,没有存放在磁盘中 ***注:
如果表中有数据,就自动保存在磁盘上
二.数据类型
ObjectId :Documents 自动生成的 _id
_id:ObjectId("5cb69a23815ea7295f8bad43") 自动生成的 json数据中不包含ObjectId类型 id类型uuid
String: 字符串,必须是utf-
Boolean:布尔值,true 或者false (这里有坑哦~在我们大Python中 True False 首字母大写)
Integer:整数 (Int32 Int64 你们就知道有个Int就行了,一般我们用Int32)
Double:浮点数 (没有float类型,所有小数都是Double)
Arrays:数组或者列表,多个值存储到一个键 (list哦,大Python中的List哦)
Object:深度<= 如果你学过Python的话,那么这个概念特别好理解,就是Python中的字典,这个数据类型就是字典
Null:空数据类型 , 一个特殊的概念,None Null
Timestamp:时间戳 通常不用这个数据类型 如果存储时间 Double
Date:存储当前日期或时间unix时间格式 (我们一般不用这个Date类型,时间戳可以秒杀一切时间类型)
① objectID
"_id" : ObjectId("5b151f8536409809ab2e6b26") #"5b151f85" 代指的是时间戳,这条数据的产生时间
#"" 代指某台机器的机器码,存储这条数据时的机器编号
#"09ab" 代指进程ID,多进程存储数据的时候,非常有用的
#"2e6b26" 代指计数器,这里要注意的是,计数器的数字可能会出现重复,不是唯一的
#以上四种标识符拼凑成世界上唯一的ObjectID
#只要是支持MongoDB的语言,都会有一个或多个方法,对ObjectID进行转换
#可以得到以上四种信息 #注意:这个类型是不可以被JSON序列化的
②插入时
③显示的数据
三.增删改查(简单版)
1.增
db.tablename.insert({"key":"value"}) 捎带手写入库和表磁盘 官方推荐写法:
db.users.insertOne({})
db.users.insertMany([{},{},{}])
2.删
db.tablename.remove({}) 删除所有数据
db.tablename.remove({age:}) 删除所有age==73的数据 官方推荐写法
db.users.deleteOne() 删除符合条件的第一条数据
db.users.deleteMany() 删除符合条件的所有数据
3.改
db.tablename.update({"name":"AlexDSB"},{"$set":{"age":}}) 只修改符合条件的一条数据
$set - set修改器 强制替换覆盖 官方推荐写法
db.tablename.updateOne() 更新符合条件的第一条数据
db.tablename.updateMany() 更新符合条件的所有数据 array+Object : db.users.updateOne({"cours.name":"装X"},{$set:{"cours.$.score":""}})
# $:指选中的下标位置
4.查
db.tablename.find() 查询符合条件的所有数据
db.tablename.find({"name":"AlexDSB"}) db.tablename.findOne() 查询符合条件的第一条数据
四.数学比较符
$lt : 小于 √
$lte: 小于等于 √
$gt : 大于 √
$gte: 大于等于 √ $ne : 不等于
$eq or 冒号 : 等于
示例:
五. $ 的高级用法
1. $ 查询关键字
Array数据类型会自动遍历
1. $in 或者(相同字段查询) db.users.find({age:{$in:[,]}})
2. $or 或者(不同字段查询) db.users.find({$or:[{age:},{hobby:"篮球"}]})
3. $and or 逗号 并列条件(两个或多个条件都要满足) 4. $all - Array数据类型 子集查询 db.users.find({hobby:{$all: ["罗玉凤"]}})
示例:
①array数据自动遍历列表
② $in
③ $or
④ $all
⑤
2. $ 修改器
$set - set修改器 强制替换覆盖
$unset - 强制删除字段
$inc - 引用增加
array操作:
$push (append) 在array中追加 db.users.update({name:"AlexDSB"},{$push:{hobby:"特斯垃圾"}})
$pushAll (extend) 在array中追加列表中的所有元素 db.users.update({name:"AlexDSB"},{$pushAll:{hobby:["22寸轮毂","V8","欧林斯"]}})
$pull (remove) 在array中删除一个元素 db.users.update({name:"AlexDSB"},{$pull: {hobby:"V8"}})
$pullAll 在array中删除一堆元素 db.users.update({name:"AlexDSB"},{$pullAll: {hobby:["小敏","芙蓉姐姐"]}})
$pop pop 删除第一个 - 或 最后一个 的值 db.users.update({name:"AlexDSB"},{$pop: {hobby:}})
示例:
①
②
3. $ 的特殊用法
存储符合条件的元素下标索引
用于修改字段
六.skip , sort , limit
1. sort 排序
db.users.find({}).sort({ age: })
db.users.find({}).sort({ age: , birthday:- }) 2. limit() 选取条目
db.users.find({}).limit() 3. skip() 跳过
db.users.find({}).skip() 4. 先排序 再跳过 最后选取(不管写的是什么顺序)
db.users.find({}).limit().skip().sort({ age:- }) 5. 分页:
(page-)*num
db.users.find({}).limit(num).skip((page-)*num)
七. pymongo基本操作
import json from pymongo import MongoClient
from bson import ObjectId # 转换 id mc = MongoClient("127.0.0.1",)
MONGODB = mc["S18day07"] #连接数据库 res = MONGODB.users.insert_one({"name":"AlexDSB"})
print(res,res.inserted_id)
# res = MONGODB.users.insert_many([{"name":"AlexDSB"},{"name":"AlexDSB"},{"name":"AlexDSB"},{"name":"AlexDSB"},{"name":"AlexDSB"}])
# print(res,res.inserted_ids) # user = MONGODB.users.find_one({"_id":ObjectId("5cb6eb7322b9441020186701")})
# print(user.get("_id"),type(user.get("_id")))
#
# user["_id"] = str(user["_id"])
# jsonstr = json.dumps(user)
# print(jsonstr , type(jsonstr)) # json 序列化
# user = list(MONGODB.users.find({}))
# for index,item in enumerate(user):
# user[index]["_id"] = str(item.get("_id"))
# print(json.dumps(user)) # MONGODB.users.update_one({"name":"AlexDSB"},{"$set":{"age":}})
# MONGODB.users.update_many({"name":"AlexDSB"},{"$set":{"age":}}) # MONGODB.users.delete_one({"age":})
# MONGODB.users.delete_many({"age":}) # MONGODB = mc["adminn"]
# res = MONGODB.users.find_one({"name":"AlexDSB"})
# res["cours"].append({"name":"路飞学城","money":"2百亿"})
# for index,cours in enumerate(res["cours"]):
# if cours.get("name") == "鸡汤":
# res["cours"][index]["score"] =
#
# MONGODB.users.update_one({"name":"AlexDSB"},{"$set":res})
八. 偷换概念
MySql MongoDB
DataBase == DataBase
Table == Collection #表
Colunm == Field #字段
Row == Documents #数据
MongoDB --- 02. 基本操作,增删改查,数据类型,比较符,高级用法,pymongo的更多相关文章
- MongoDB的ObjectId和基本操作增删改查(3)
ObjectId 基本操作增删改查 增: insert 介绍: mongodb存储的是文档,. 文档是json格式的对象. 语法: db.collectionName.insert(document) ...
- 利用koa实现mongodb数据库的增删改查
概述 使用koa免不了要操纵数据库,现阶段流行的数据库是mongoDB,所以我研究了一下koa里面mongoDB数据库的增删改查,记录下来,供以后开发时参考,相信对其他人也有用. 源代码请看:我的gi ...
- Mongodb--基础(连接,增删改查,数据类型)
mongodb 日常启动命令 mongod --dbpath D:\data\db 一.启动,连接 mongodb是一个非关系型数据库 1. 启动MongoDB服务: 安装时我并没有将mongodb服 ...
- webpack4+express+mongodb+vue 实现增删改查
在讲解之前,我们先来看看效果如下所示: 1)整个页面的效果如下: 2) 新增数据效果如下: 3) 新增成功如下: 4) 编辑数据效果如下: 5) 编辑成功效果如下: 6) 删除数据效果如下: 7) 删 ...
- nodejs对mongodb数据库的增删改查操作(转载)
首先要确保mongodb的正确安装,安装参照:http://docs.mongodb.org/manual/tutorial/install-mongodb-on-debian-or-ubuntu-l ...
- 69.nodejs对mongodb数据库的增删改查操作
转自:https://www.cnblogs.com/sexintercourse/p/6485381.html 首先要确保mongodb的正确安装,安装参照:http://docs.mongodb. ...
- python连接集群mongodb,封装增删改查
1.下载pymongo pip install pymongo 2.直接上代码 [ini配置文件] 封装读ini省略~~ [db.py] class Database(): def __init__( ...
- web sql 基本操作 - 增删改查
不喜欢看md原文的 可以访问这个链接:http://note.youdao.com/noteshare?id=6a91e3dea7cdf5195bb0e851d9fcb5a5 # web sql 增删 ...
- MongoDB学习之--增删改查(1)
本文是对mongodb学习的一点笔记,主要介绍最简单的增删改操作,初学,看着API,有什么错误,希望大家指正:(使用官方驱动) 1.增 增加操作是最简单的,构造bsonDcument插入即可: 方式1 ...
随机推荐
- springboot整合微软的ad域,采用ldap的api来整合,实现用户登录验证、
流程: 1.用户调登录接口,传用户名和密码2.用户名和密码在ad验证,验证通过后,返回当前用户的相关信息.(注:ldap为java自带的api不需要maven引入其他的)3.根据返回的用户信息,实现自 ...
- 关于HTTP协议学习(二)
一,目录结构 HTTP Cookie & Session HTTP Cache (缓存) 二,HTTP Cookie & Session 1. 我们看到的 cookie 我们通过浏览器 ...
- CDI feature
CDI Java EE的上下文和依赖注入(Contexts and Dependency Injection for Java EE,CDI),CDI是即将完成的Java EE 6平台的关键组成部分, ...
- 什么是一致性Hash算法?
一.Redis集群的使用 我们在使用Redis的时候,为了保证Redis的高可用,提高Redis的读写性能,最简单的方式我们会做主从复制,组成Master-Master或者Master-Slave的形 ...
- asp.net 使用rabbitmq事例
本例asp.net 使用rabbitmq需求背景:为了提升用户体验,用户点击下单按钮,后台先做一些简单必要的操作,返回给用户一个友好提示(比如提示处理中,或者订单状态为处理中),然后发通过发消息给队列 ...
- spring boot错误: 找不到或无法加载主类
一:当在eclipse启动spring boot项目时出现问题: springboot错误: 找不到或无法加载主类 解决办法: 1,通过cmd命令行,进入项目目录进行,mvn clean instal ...
- 【Linux】Set CentOS no GUI default
[root@localhost ~]#vi /etc/inittab 重点看下面这部分代码 # 0 - halt (Do NOT set initdefault to this) ...
- 【Vagrant】-NO.130.Vagrant.2 -【Error:the filesystem "vboxsf" is not available】
Style:Mac Series:Java Since:2018-09-10 End:2018-09-10 Total Hours:1 Degree Of Diffculty:5 Degree Of ...
- 【菜鸟学Python】案例一:汇率换算
汇率换算V1.0 案例描述: 设计一个汇率换算器程序,其功能是将外币换算成人民币,或者相反 案例分析: 分析问题:分析问题的计算部分: 确定问题:将问题划分为输入.处理及输出部分: 设计算法:计算部分 ...
- MATLAB算术运算符和常用函数
1 算术运算符 Matlab中的算术运算符按优先级由高到低为: (1) ^ 幂 (2) * 乘 / 右除(正常除) ...