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 ...
随机推荐
- 关于Mysql6.0+的时区错乱问题
如果使用mysql6.0+的JDBC驱动版本的时候,有时候会出现程序时间与数据库时间相差很多个小时; 1.如果以北京时间为例,相差8个小时的情况一般是你在连接jdbc的url中没有标明system_t ...
- Node.js 开发
Node.js不必介绍,已经太火爆了.简单说是用Javascript开发Web服务端,基于Google V8引擎,单线程.不多说从零开始Windows平台下的Node.js的开发之旅. 环境工具为先 ...
- Flask(python)异步(ajax)返回json格式数据
主要讨论两个问题,第一个是关于json.dumps 与jsonify区别,第二个是几种异步的区别(见jQuery中的$.getJSON.$.ajax.$.get.$.post的区别). json.du ...
- 一对多关联模型,BELONGS_TO
先分别创建三张表:test_user test_message test_user 表里有id.name字段 test_message 表里有id.content.uid字段 然后建立一个Mode ...
- koa1 源码详解1
koa的核心设计 是由 koa 与 koa-compose两个包构成的. 包含了 上下文context的创建引用,中间件的概念及其合并执行的机制. application.js koa1.0中直接将c ...
- what's the 灰盒测试
what's the 灰盒测试 灰盒测试的概念:是一种综合测试的方法,他将白盒测试和黑盒测试结合在一起,构成一种无缝测试技术. 灰盒测试的思想:是基于程序运行时的外部表现又结合程序内部逻辑结构来设计测 ...
- Python3学习之路~8.4 利用socket实现文件传送+MD5校验
利用socket实现文件传送,大约分为如下几步: 1.读取文件名2.检测文件是否存在3.打开文件(别忘了最后关闭文件)4.检测文件大小5.发送文件大小给客户端6.等客户端确认7.开始边读边发数据8.m ...
- box-sizing:border-boxing的使用
<div class="box"></div> .box { margin-top: 200px; margin-left: 200px; backgrou ...
- 学习animate.css包含了一组炫酷、有趣、跨浏览器的动画
1.animate.css包含了一组炫酷.有趣.跨浏览器的动画,可以在你的项目中直接使用. 第一步:引入animate.css样式文件或者引入某些平台的CDN文件: <head> < ...
- Mac截图操作,自定义快捷键
选择system preferences 下面能看到系统定义的快捷键,可以自己修改