• mongodb crud


    mongodb crud学习

    插入

    insert

    • 插入单个
    db.users.insert({"name":"jonny","age":25})
    
    • 插入多个
    db.users.insert([{"name":"xhl","age":25},{"name":"向洪林","age":25}])
    

    insertOne

    db.users.insertOne({"name":"jonny","age":25})
    

    insertMany

    db.users.insertMany([{"name":"xhl","age":25},{"name":"向洪林","age":25}])
    

    删除

    remove

    • 存在条件
    db.users.remove({"name":"xhl"})
    
    • 删除所有
    db.users.remove({})
    

    注意:删除文档时必须要传递条件,删除所有传递{}对象;remove是shell种的api,而delete是程序中的api

    drop

    db.users.drop()
    

    注意:drop会将数据和表都删除掉,包括建立的索引

    deleteOne

    db.users.deleteOne({"name":"xhl"})
    

    官方文档:https://docs.mongodb.com/manual/reference/method/db.collection.deleteOne/

    deleteMany

    db.users.deleteMany({"age":25})
    

    官方文档:https://docs.mongodb.com/manual/reference/method/db.collection.deleteMany/

    修改

    update

    第一个参数(query)是修改条件,第二个参数(update)是修改的值

    db.users.update({"name":"xhl"},{"age":30})})
    

    注意:这里后面update会直接替换掉原来的文档

    使用$set

    db.users.update({"name":"jonny"},{ $set:{"age":25}})
    

    使用$set会修改特定文档键的值

    updateOne

    db.users.updateOne({"age":25},{$set:{"name":"test"}})
    

    这里age会筛选出多个,但是只会修改到第一条

    updateMany

    修改年龄大于25岁的姓名为test

    db.users.updateMany({"age":{$gt:25}},{$set:{"name":"test"}})
    

    查询

    find

    find类似与关系型数据库中的select

    • 单条件查询
    db.users.find({"name":"test"})
    
    • 多条件and查询
    db.users.find({"name":"test","age":25})
    
    • $and

    查找名称为test并且年龄为25的文档,这里和上面多条件查询一样的效果

    db.users.find({$and:[{"name":"test"},{"age":25}]})
    
    • $or

    查找名称为test或者年龄为25的文档

    db.users.find({$or:[{"name":"test"},{"age":25}]})
    
    • 正则表达式

    匹配name以t开头的文档

    db.users.find({"name":/^t/})
    
    • 逻辑表达式运算

    =

    db.users.find({"age":25})
    

    <>(!=)

    db.users.find({"age":{$ne:25}})
    

    >

    db.users.find({"age":{$gt:25}})
    

    >=

    db.users.find({"age":{$gte:25}})
    

    <

     db.users.find({"age":{$lt:25}})
    

    <=

    db.users.find({"age":{$lte:25}})
    

    与关系型数据库的对照表

    SQL MQL
    age=25 {"age":25}
    age<>25 {"age":{$ne:25}}
    age>25 {"age":{$gt:25}}
    age>=25 {"age":{$gte:25}}
    age<25 {"age":{$lt:25}}
    age<=25 {"age":{$lte:25}}
    age=25 AND name='test' {"age":25,"name":"test"}或{$and:[{"age":25},{"name":"test"}]}
    age=25 OR name='test' {$or:[{"age":25},{"name":"test"}]}
    age is NULL {"age":{$exists:false}}(和关系型数据库中exites()类似)
    age IN (25,26,30) {"age":{$in:[25,26,30]}}
    • 子文档查询

    首先插入测试数据

    db.users.insert({"name":"jonny","age":25,"company":{"name":"CY","address":"ChongQing"},"claims":["程序猿","工程师","
    小白"]})
    

    使用的方式是和js中一致,使用.的方式进行查找

    db.users.find({"company.name":"CY"})
    

    注意:子文档查询千万不是db.users.find({"company":{"name":"CY"}})使用对象的方式进行查找的

    • 数组多个查询$elemMatch

    准备测试数据

    db.users.insert({"name":"jonny","age":25,"company":{"name":"CY","address":"ChongQing"},"claims":[
        {"name":"程序猿","expire":1800,"creation":"2020-06-09"},
        {"name":"工程师","expire":3600,"creation":"2020-06-10"},
        {"name":"小白","expire":4800,"creation":"2020-06-11"},
    ]})
    

    查找claims数组中name开头并且expire大于1800

    db.users.find({"claims":{$elemMatch:{"name":/^小/,"expire":{$gt:1800}}}}))
    
  • 相关阅读:
    用sed删除文件中指定行
    传输文件到docker容器
    RAID技术全解图解-RAID0、RAID1、RAID5、RAID100
    Best PDF Document Viewers for Linux Systems
    nvidia docker install
    cuda apt install
    Ubuntu16_18建立返回桌面、显示桌面的快捷图标的特殊方法
    Linux Shell sort排序常用命令
    linux cut用法
    DispatcherServlet的作用
  • 原文地址:https://www.cnblogs.com/cqxhl/p/13068872.html
Copyright © 2020-2023  润新知