mongoDB 操作

mongoDB 操作

基本的 存储结构

MongoDB:
{
    {
        id : 1,
        name:章子怡,
        age : 18,
        phone:15512351234
    },
    {
        ids : 1,
        names:范冰冰,
        ages : 18,
        phones:15512351234
    }
}

1. MongoDB的启动 CMD :

mongod  # 直接启动 注意数据存储路径  默认 C:/data/db  需要手动创建

# 指定文件路径 开启 mongod
mongod --dbpath="D:/data/db/"

# 运行客户端 : 两个cmd 窗口
mongo

2.指令

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

# 1)删除表

db.表名.drop() 固定格式,要在当前库下的表名

> db.t1.drop()

true

# 2)删除库

db.dropDatabase()  //固定格式,删除当前库(不用跟参数,区分大小写)

# 3)删除表记录

db. 集合名 .remove({ 条件 })  //删除与条件匹配的所有记录

db. 集合名 .drop();          //删除表

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)
1.5. $unset 删除Key 删除Field  (del dict["key"])
db.school.updateOne({"school_name":"OldBoy"},{$unset:{"student_list":1}})

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

# 针对Array的操作
3.$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"]}})

4.$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]}})

5.$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

猜你喜欢

转载自www.cnblogs.com/zhang-zi-yi/p/10749565.html