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 ...
随机推荐
- python遍历文件(替换)
#!/usr/local/bin/python # -*- coding: UTF-8 -*- #coding:gbk import re import os w_str="" x ...
- Django2.0.4 + websocket 实现实时通信,主动推送,聊天室及客服系统
webSocket是一种在单个TCP连接上进行全双工通信的协议. webSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据.在WebSocket API中,浏览器 ...
- oracle两种分页查询
第一种: SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM table_name) A ) ; 第二种: SELECT * FROM ( ...
- linux基础命令--groupmod 修改组定义
描述 groupmod命令用于修改系统上的组定义. groupmod命令通过更改组数据库(the group database)里的相关条目来修改指定的组. 语法 groupmod [选项] GROU ...
- HTML技巧篇:如何让单行文本以及多行文本溢出时显示省略号(…)
参考:https://baijiahao.baidu.com/s?id=1621362934713048315&wfr=spider&for=pc 本篇文章主要给大家介绍一下在html ...
- 某里巴巴Java工程师常规面试题以及解答
从HR弄来的P6-P7的JAVA工程师题目,分享给大家 1 Spring AOP和IOC的实现方法 http://blog.csdn.net/tarena_lixy/article/details/7 ...
- Java8(1)之Lambda表达式初步与函数式接口
Lambda表达式初步 介绍 什么是Lambda表达式? 在如 Lisp.Python.Ruby 编程语言中,Lambda 是一个用于表示匿名函数或闭包的运算符 为何需要lambda表达式? 在 Ja ...
- 【Common】-NO.122.common.1 - pv、uv、ip,tps、qps、rps术语
Style:Mac Series:Java Since:2018-09-10 End:2018-09-10 Total Hours:1 Degree Of Diffculty:5 Degree Of ...
- mat-form-field must contain a MatFormFieldControl错误的解决方法
下面的代码竟然出错了: <mat-form-field> <input matInput placeholder="输入名称"> </mat-form ...
- R-CNN,SPP-NET, Fast-R-CNN,Faster-R-CNN, YOLO, SSD, R-FCN系列深度学习检测方法梳理
1. R-CNN:Rich feature hierarchies for accurate object detection and semantic segmentation 技术路线:selec ...