MySQL:

1   金老板 18  15512351234
2 小哪吒 20 15312341234
3 Alex 73 15512341234

MongoDB:

{
{
id : 1,
name:金老板,
age : 18,
phone:15512351234
},
{
ids : 1,
names:金老板,
ages : 18,
phones:15512351234
}
}

1.MongoDB的启动 CMD :

mongod --dbpath="D:/data/db/"
客户端 : mongo

2.指令

  • show databases - 显示数据库(在磁盘中存储的数据库)
  • db - 显示当前使用的数据库
  • use db_name - 切换使用中的数据库,如果数据库不存在,在内存中创建一个数据库空间大小是0
  • db.user - 在当前数据库的内存中创建一个数据表空间 大小是0
  • show tables - 显示当前数据库中的数据表 (存放在磁盘中的)

在MongoDB - 使用了不存在的对象,即创建该对象

3.MongoDB的增删改查:

增加数据:

单个信息增加
不推荐写法

db.user_info.insert({
"name":"alexdsb",
"age":73
})

多条增加:
不推荐写法

db.user_info.insert([{"name":1},{"name":3},{"name":2}])

官方推荐写法:

db.user_info.insertOne({})
db.user_info.insertMany([{},{}])

查找数据:

db.user_info.find({})
db.user_info.find({"age":73})
db.user_info.findOne({"age":73})

修改数据:

官方不推荐 // 修改器:$set

db.user_info.update({"age":73}, {$set:{"name":"JWB"}})

官方推荐

db.user_info.updateOne({"age":73}, {$set:{"name":"JWB"}})
db.user_info.updateMany({"age":73}, {$set:{"name":"JWB"}})

删除数据:

官方不推荐

db.user_info.remove({name:111})

官方推荐

db.user_info.deleteOne({name:1})
db.user_info.deleteMany({name:1})

_id = ObjectID 关系型数据库中的 自增ID 以数据库为核心的自增
表为核心的自增ID

user - book
1 1
2 2
3 3

数据库为核心的自增ID ObjectID宇宙唯一的

user - book - auth
1 4 7
2 5 8
3 6 9
10 11 12
13 14 15

4.数据类型:

  • ObjectID 自动创建的 一个字符串 Documents 自生成的 _id
  • String 字符串类型 不需要限定长度的
  • Boolean:布尔值,true 或者false
  • Double:浮点数 (没有float类型,所有小数都是Double) !float是不存在的
  • Integer:整型 数据类型
  • Arrays:[] 数组类型 在python中就是个列表
  • Object:{} 对象类型 在python中就是个字典 在其他语言中叫 Object
  • Null == None
  • 时间数据类型 - Timestamp - Date

5.MongoDB与关系型数据库概念的变差:

关系型数据库 MongoDB
database database
table Collections
row Documents
Colunm数据列 Field

6.MongoDB修改器

  1. $set: 强制修改
    {$set:{"name":1}} == (dict["key"] = value)
  2. $unset: 删除Key 删除Field (del dict["key"])
    db.school.updateOne({"school_name":"OldBoy"},{$unset:{"student_list":1}})

  3. $inc 引用增加
    db.user_info.updateMany({},{$inc:{"age":1}})

  4. 针对Array的操作

    1. $push - 在Array中增加一条数据

      db.school.updateOne({"class_name":"S16"},{$push: {student_list:{"name":"JSJ","age":25,"gender":"Null"}}})

      $pushAll 在Array中添加多条数据:

      db.school.updateOne({"type":"list"},{$pushAll:{"num_list":["a","b","c"]}})
    2. $pull => [].remove - 在Array中删除符合条件的元素

      db.school.updateOne({"type":"list"},{$pull:{"num_list":2}})         db.school.updateOne({"school_name":"OldBoy"},{$pull:{"student_list":{"name":"JSJ"}}})

      $pullAll - 在Array中删除所有符合条件的元素

      db.school.updateOne({"type":"list"},{$pullAll:{"num_list":[1,2,3]}})
    3. $pop => [].pop() - 删除Array中的第一条或最后一条

      db.school.updateOne({"student_list.name":"JSJ"},{$pop: {"student_list":-1}}) -1:第一个
      db.school.updateOne({"student_list.name":"JSJ"},{$pop: {"student_list":1}}) 1: 最后一个

7.$ 字符

存储符合条件Array中元素的下标索引

8.针对Object的更新操作

db.school.updateOne({"school_name":"OldBoy"},{$set:{"student.age":84}})

db.school.updateOne({"school_name":"OldBoy"},{$inc:{"student.age":1}})

9.$数学比较符

$lt <
$gt >
$lte <=
$gte >=
$eq == db.school.find({"age":{"$eq":3}})

$ne != db.school.find({"age":{"$ne":3}})

10.条件分隔:

and :
db.school.find({"class_name":"S16","school_name":"OldBoy"})
db.school.find({$and: [{"school_name":"OldBoy"},{"class_name":"S16"}]})

or :
db.school.find({$or:[{"school_name":"OldBoy"},{"class_name":"S16"}]}) 不同字段的or

in :
db.school.find({"school_name":{"$in":["OldBoy","OldBoySZ"]}}) 相同字段的or

all :
db.school.find({"userlist":{$all:[4,3,2]}}) 子集查询

11.limit sort skip

// limit 选取
db.school.find({}).limit(5) // skip 跳过
db.school.find({}).skip(5) // sort 排序
db.school.find({}).sort({ age:-1 })
db.school.find({}).sort({ age:1 }) // 跳过 选取
db.school.find({}).skip(5).limit(5)
db.school.find({}).limit(5).skip(5) // 排序 跳过 选取
db.school.find({}).limit(5).skip(5).sort({ age:-1 }) // 分页 每页3条
// 第一页
db.school.find({}).limit(3).skip(0).sort({ _id:1 }) // (page - 1) * 3
// 第二页
db.school.find({}).limit(3).skip(3).sort({ _id:1 }) // (page - 1) * 3
// 第三页
db.school.find({}).limit(3).skip(6).sort({ _id:1 }) // (page - 1) * 3

12.pymongo - 使用python操作MongoDB

MongoDB初探-基本语句和数据结构的更多相关文章

  1. mongodb常用操作语句

    mongodb常用操作语句 A:创建数据表 db.createCollection(name, {capped: <Boolean>, autoIndexId: <Boolean&g ...

  2. MongoDB对应SQL语句

    -------------------MongoDB对应SQL语句------------------- 1.Create and Alter     1.     sql:         crea ...

  3. mongodb 跟踪SQL语句及慢查询收集

    有个需求:跟踪mongodb的SQL语句及慢查询收集 第一步:通过mongodb自带函数可以查看在一段时间内DML语句的运行次数. 在bin目录下面运行  ./mongostat -port 端口号  ...

  4. Mongodb 与sql 语句对照

    此处用mysql中的sql语句做例子,C# 驱动用的是samus,也就是上文中介绍的第一种. 引入项目MongoDB.dll //创建Mongo连接 var mongo = new Mongo(&qu ...

  5. mongodb的更新语句

    MongoDB 使用 update() 和 save() 方法来更新集合中的文档: update()方法: update() 方法用于更新已存在的文档.语法格式如下: db.collection.up ...

  6. mongodb的查询语句学习摘要

    看了些资料,对应只需要知道怎么查询和使用mongodb的我来说,这些足够啦. 左边是mongodb查询语句,右边是sql语句.对照着用,挺方便. db.users.find() select * fr ...

  7. MongoDB初探系列之二:认识MongoDB提供的一些经常使用工具

    在初探一中,我们已经能够顺利的将MongoDB在我们自己的机器上跑起来了. 可是在其bin文件夹以下另一些我们不熟知的工具.接下来,将介绍一下各个小工具的用途以及初探一中MongoDB在data文件夹 ...

  8. 深入理解mongodb查询条件语句

    阅读目录 1. 理解:"$lt"."$lte"."$gt" 和 "$gte" 2. 理解 '$ne' 3. 理解 &qu ...

  9. MongoDB简单查询语句<平时使用语录,持续更新>

    MongoDB查询语句 --查询近三个月的客户使用量  aggregate:使用聚合  match:过滤  group分组   -- mysql中select org_code as 近三个月使用商户 ...

随机推荐

  1. Codeforces Round #508 (Div. 2) C D

    C: C - Gambling 给你两个数列  每一回合A可以选择从第一个序列里面选一个数或者清除第二个序列里面选一个数 同理B能从第二序列里面选数或者清除第一个序列里面一个数 然后 求A所选的数之和 ...

  2. BZOJ 4562: [Haoi2016]食物链(拓扑排序)

    题面: https://www.lydsy.com/JudgeOnline/problem.php?id=4562 一句话题意:给一个DAG,求有多少条不完全相同的链,使链首入度为0,链尾出度为0. ...

  3. 使用 MongoDB 存储日志数据

    使用 MongoDB 存储日志数据     线上运行的服务会产生大量的运行及访问日志,日志里会包含一些错误.警告.及用户行为等信息.通常服务会以文本的形式记录日志信息,这样可读性强,方便于日常定位问题 ...

  4. pandas中遍历dataframe的每一个元素

    假如有一个需求场景需要遍历一个csv或excel中的每一个元素,判断这个元素是否含有某个关键字 那么可以用python的pandas库来实现. 方法一: pandas的dataframe有一个很好用的 ...

  5. 真的无语, 今天遇到一个奇葩的事情: http 会话劫持

    今天一个用户反应说软件一运行就提示错误,然后关闭. 然后用户截屏发给我看了一下,我一看,无语了. 在软件中显示的正常一段文字说明尾部出现 <script src="http://ad. ...

  6. 第三节,使用OpenCV 3处理图像(模糊滤波、边缘检测)

    一 不同色彩空间的转换 OpenCV中有数百种关于在不同色彩空间之间转换的方法.当前,在计算机中有三种常用的色彩空间:灰度,BGR以及HSV(Hue,Saturation,Value). 灰度色彩空间 ...

  7. hdu 4279"Number"(数论)

    传送门 参考资料: [1]:https://www.2cto.com/kf/201308/233613.html 题意,题解在上述参考资料中已经介绍的非常详细了,接下来的内容只是记录一下我的理解: 我 ...

  8. Luogu P3254 圆桌问题

    题目链接 \(Click\) \(Here\) 水题.记得记一下边的流量有没有跑完. #include <bits/stdc++.h> using namespace std; const ...

  9. (DIjsktra算法) nyoj1401-一场说走就走的旅行

    题目描述: 有一天,孩子回来对我说:“妈妈,听说马尔代夫很不错,放假了我想去玩.”马尔代夫?我也想去!没有人不向往一场说走就走的旅行!“其实我想去的地方很多,呼伦贝尔大草原.玉龙雪山.布达拉宫.艾菲尔 ...

  10. (基础)codeVs2235 机票打折

    题目描述 Description .输入机票原价(3到4位的正整数,单位:元),再输入机票打折率(小数点后最多一位数字).编程计算打折后机票的实际价格(单位:元.计算结果要将个位数四舍五入到十位数“元 ...