MongoDB 数据库的概念以增删改查

1,MongoDB概念解析:

Mongo数据库基本概念是文档,集合,数据库,下表给予介绍

SQL术语概念

MongoDB术语概念

解释/说明

database

database

数据库

table

collestion

数据库/集合

row

document

数据记录行/文档

column

field

数据字段/域

index

index

索引

table joins

 

表连接,MongoDB不支持

primary key

primary key

主键,MongoDB自动将_id字段设置为主键

一个MongoDB中可以建立多个数据库.MongoDB的默认数据库为"db",该数据存在data目录中.MongoDB的单个 实例 可以容纳多个独立的数据库.每一个都有自己的集合权限,不同的数据库也放置在不同的文件中.

show dbs   展示所有数据库

以上实例命令中,"local"是要选择的数据库.

数据库名是保留的,可以直接访问这些特殊作用的数据库.

  • admin: 从权限的角度来看,这是"root"数据库,钥匙将一个用户添加到这个数据库,这个用户自动继承所有的数据库的权限.一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器
  • local:这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
  • config:当Mongo用于分片设置式,config数据库在内部使用,用于白村分片的相关信息

2,MongoDB的查找:

查找语句:

1// 插入多条数据用{},{}隔开 2db.xiaopangpang.insertMany([{ 3 "name":"xuexue", 4 "age":29, 5 "hobby":["继继","帅爆太阳的男人","帅爆太阳那人"] 6}]) 7db.xiaopangpang.insertMany([{ 8 "name":"xiaoxue", 9 "age":28, 10 "hobby":["帅爆太阳的men", "帅爆太阳的gentleman","帅爆太阳的行者"] 11}]) 12db.xiaopangpang.insertMany([{ 13 "name":"xueren", 14 "age":27, 15 "hobby":["多想再见你","哪怕匆匆一眼","就离去"] 16}])

 增加语句:

1db.xiaopangpang.insertOne({ 2 "name":"miss", 3 "age":26, 4 5})

更新语句:

1}) 2// 更新编辑数据的操作 3db.xiaopangpang.updateOne({"name":"xiaoxueza"},{$set:{"name":"laingxue"}}) 4db.xiaopangpang.updateMany({"age":{$gt:28}},{$set:{"age":30}}) 5db.xiaopangpang.find()

删除语句:

1// 删除数据remove({})什么都不加把表里的数据都删除 2db.xiaopangpang.remove({}) 3db.xiaopangpang.find({ 4 "name":"miss" 5}) 6// 删除表里边的数据 7db.xiaopangpang.deleteOne({"name":"xiaoxue"}) 8db.xiaopangpang.find() 9db.xiaopangpang.insertOne({ 10 "name":"jdhjasfho", 11 "age":23, 12 "hobby":["fmkljfl","daf"] 13})

 3,MongoDB的进阶操作

3.1,大胖胖表的增删改查

1// 大胖胖的表的增删该查 2// 查看所有的表 3show tables 4db.dapangpang.find({})

修改器:

1// 修改器 2db.dapangpang.updateOne({"name":"雪雪"},{$set:{"name":"雪雪"}}) 3//$unset 简单粗暴的删除字段 4db.dapangpang.updateOne({"name":"雪雪"},{$unset:{"name":"雪雪"}}) 5db.dapangpang.insertOne({ 6 "name":"雪人", 7 "hobby":[ 8 "me", 9 "my", 10 "i", 11 "miss" 12 ] 13}) 14// 插入年龄的字段 db.dapangpang.updateMany({},{$set:{"age":26}}) // $inc引用增加 db.dapangpang.updateMany({"name":"雪ren"},{$inc:{"age":2}}) db.dapangpang.remove({}) db.dapangpang.insertMany([{ "name":"雪雪", "hobby":[ "帅爆太阳的男人", "帅爆太阳那人", "帅爆太阳的men" ], "age":27 }, { "name":"小雪", "hobby":[ "花落翩翩", "时光旋转","慢慢沦陷" ], "age":26 }])

1// array操作,在array中添加一个新的元素 2db.dapangpang.updateOne({"name":"雪人"},{$push:{"hobby":"miss"}})

1// pull在array中删除一个的元素 2db.dapangpang.updateOne({"name":"雪雪"},{$pull:{"hobby":"帅爆太阳那人"}})

1//pop不含索引-1,从前往后, 1从后往前 2db.dapangpang.updateOne({"name":"小雪"},{$pop:{"hobby":1}}) 3db.dapangpang.updateOne({"name":"小雪"},{$pop:{"hobby":-1}})

1//保留索引条件数据的下标,实际是定位到那个字典或者列表 2db.dapangpang.updateOne({"hobby":"me"},{$set:{"hobby.$":"it's ok!"}})

1// Object字典的操作 2db.dapangpang.updateOne({"name":"雪雪"},{$set:{feature:["perfect", "lovely","stubborn"]}}) 3db.dapangpang.updateOne({"name":"雪雪"},{$set:{feature:{"size":32,}}}) 4db.dapangpang.updateOne({"name":"雪雪"},{$inc:{"feature.size":5}})

1// 修改hobby中的big 2db.dapangpang.updateOne({"hobby.depth":6},{$set:{"hobby.$.big":26}})

1//limit表示从当前位置选择若干个 2db.dapangpang.find({}).limit(2) 3// skip跳过 4db.dapangpang.find({}).skip(2) 5// sort排序 db.dapangpang.find({}).sort({age:-1}) db.dapangpang.find({}).sort({"name":1}) // limit + skip + sort 分页 // 优先级最高的为sort // 其次为skip // 最低级为limit db.dapangpang.find({}).limit(1).sort({age:-1}).skip(1)

 

4,MongoDB在python中的应用

  • 连接MongoDB服务器

    import pymongo from bson import ObjectId

    连接mongo服务器

    mongo_client = pymongo.MongoClient(host="127.0.0.1", port=27017) MONGO = mongo_client.get_database("xuexue") tb = MONGO.get_collection("dapangpang") print(tb)

  • 查找数据

    查询数据库

    res = tb.find() print(res, type(res)) for data in res: print(data) res1 = tb.find_one({"name": "雪雪"}) print(res1) res2 = tb.find({"$or":[{"name":"小雪"}, {"hobby": "帅爆太阳的男人"}]}) for data in res2: print(data)

 

1res_obj = tb.find_one({"_id":ObjectId(res1["_id"])}) 2print(res_obj)

  • 增加数据

    增加数据

    res = tb.insert_one({"name": "雷子", "age": 24,"hobby":["健身", "学习", "小说"]})

    print(res,res.inserted_id)

    ret = tb.find_one({"name":"雷子"})

    print(ret)

    res1 = tb.insert_many([{

    "name": "郝哥", "age": 27, "hobby":["宋 ", "振", "中"]},

    {"name": "佳丽", "age": 27, "hobby": ["还真不了解", "也不知道为什么", " 可能是鬼迷心窍了吧 "]}

    ])

    print(res1)

    ret1 = tb.find_one({"name": "郝哥"})

    ret2 = tb.find_one({"name": "佳丽"})

    print(ret1, ret2)

    ret3 = tb.find()

    for data in ret3:

    print(data)

  • 修改数据

    修改数据

    res = tb.update_one({"name": "佳丽"}, {"$set": {"age": 27}}) print(res,dir(res), res.raw_result) ret = tb.find_one({"name": "佳丽"}) print(ret)

  • 删除数据

    删除数据

    res = tb.delete_one({"name": "雷子"})

    print(res, dir(res), res.raw_result)

    res1 = tb.delete_many({"name": "郝哥"})

    print(res1, res1.raw_result)

    res = tb.find()

    for data in res:

    print(data)

    print(res)

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

sql注入

反引号是个比较特别的字符,下面记录下怎么利用0x00SQL注入反引号可利用在分隔符及注释作用,不过使用范围只于表名、数据库名、字段名、起别名这些场景,下面具体说下1)表名payload:select\from\users\whereuser\_id1limit0,1;!(https://o

Python3:sqlalchemy对mysql数据库操作,非sql语句

Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''

MongoDB 数据库的概念以增删改查 - HelloWorld