Error[8]: Undefined offset: 1177, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

文章目录

MongoDB中文文档

SQL术语MongoDB术语说明
databasedatabase数据库
tablecollection数据库表/集合
rowdocument数据记录行/文档
columnfield数据字段/域
indexindex索引
table joins表连接,MongoDB不支持
primary keyprimary key主键,MongoDB自动将_id字段设置为主键

注意

1.Docker安装MongoDb
docker
#创建和启动容器  pull mongo:latest

docker
= run -d --restart27017always -p #进入容器 :27017 --name mymongo -v /data/db:/data/db -d mongo

docker
exec #使用MongoDB客户端进行 *** 作  -it mymongo/bin/bash 

#查询所有的数据库 
mongo 

db.help()
show dbs 
2.数据库 *** 作 3.集合 *** 作 4.文档 *** 作
db.User.find"zhangsan"{name:})select
相当于
= * from User where name 'zhangsan' ;(
db.User.find}{age:21'name', {'age':1, }:1)select
相当于
= name, age from User where age 21 ;(
db.User.find)(.sort}{age:1)select
相当于
; * from User order by age(
db.User.find)(.skip0)(.limit3)select
相当于
2 * from User skip 3 limit (
db.User.find$in{age:{[:21,26],32}})select
相当于
in * from User where age ( 2126, 32, )(
db.User.find$gt{age:{}:20})(.count)select
相当于
( count)*20 from User where age >;(
db.User.find$or{[:}{age:21}, {age:28]})select
相当于
= * from User where age 21 = or age 28 (
db.User.find"zs"{name:}, age:28)select
相当于
= * from User where name 'zs'= and age 28 ;
  • 更新文档
  • db.User.update"zhangsan"{name:}$set, {}:{age:100, sex:0})=
    相当于
    update Userset age 100 =, sex 0 = where name 'user1' 
  • 删除文档
  • 根据id删除
    db.User.remove)id(
    删除所有
    db.User.remove}{)
  • 聚合 *** 作
  • db.User.createIndex({"name":1})
    描述实例$sum
    计算总和db.mycol.aggregate([{$group : {_id : “$by_user”, num_tutorial : {$sum : “$likes”}}}])$avg
    计算平均值db.mycol.aggregate([{$group : {_id : “$by_user”, num_tutorial : {$avg : “$likes”}}}])$min
    获取集合中所有文档对应值得最小值db.mycol.aggregate([{$group : {_id : “$by_user”, num_tutorial : {$min : “$likes”}}}])$max
    获取集合中所有文档对应值得最大值db.mycol.aggregate([{$group : {_id : “$by_user”, num_tutorial : {$max : “$likes”}}}])
    5.SpringBoot集成MongoDB

    1、创建SpringBoot工程

    2、导入依赖

    <dependency>
    	groupId>org.springframework.boot<groupId>
        artifactId>spring-boot-starter-data-mongodb<artifactId>
        version>2.6.6version>
    #配置mongoDB地址dependency>
    

    3、配置文件application.yml中添加

    spring
    :data
      :mongodb
        :#mongodb://192.168.140.100:27017/数据名.集合名
        	  uri
          :: mongodb://192.168.140.100
  • 添加文档
  • 27017/why_datebase.test
    5.1.基于MongoTemplate 的CRUD
        private
        MongoTemplate ; mongoTemplate@Test
    
        void
        testInsert ()User {
            = user new User ();.
            usersetName("陈三");.
            usersetAge(25);//向User表中插入数据
            User
            = user1 . mongoTemplateinsert()user;}
        
  • 查询表中所有文档
  •     void
        testFind ()List{
            <User=> all . mongoTemplatefindAll(User.class);for
            ( User: user ) allSystem {
                ..errprintln()user;}
            }
        
  • 根据id查询
  •    void
        testFindById ()//根据id查询{
            User
            = user . mongoTemplatefindById("625c06dae63b0056f5f21fc8",User .class);System
            ..errprintln()user;}
        
  • and查询
  •     void
        findUserListAnd ()Query{
            = query new Query (Criteria.where("name").is("张三").and("age").is(25));//条件查询 where name = '张三' and age = 25
            List
            <User=> users . mongoTemplatefind(,queryUser .class);System
            ..errprintln()users;}
        
  • or查询
  •     void
        findUserListOr ()//条件查询:where name = '张三' or id = ‘625c066b8d584444626116ae’{
            Criteria
            = name Criteria .where("name").is("张三");Criteria
            = id Criteria .where("id").is("625c066b8d584444626116ae");Criteria
            = criteria new Criteria ();//合并or的查询条件
            .
            criteriaorOperator(,name)id;Query
            = query new Query ();.
            queryaddCriteria()criteria;List
            <User=> users . mongoTemplatefind(,queryUser .class);System
            ..errprintln()users;}
        
  • 模糊查询
  •     void
        testLike ()String{
            = name "三" ;String
            = regex String .format("%s%s%s","^.*",,name".*$");//Pattern.CASE_INSENSITIVE : 忽略大小写
            Pattern
            = pattern Pattern .compile(,regexPattern.)CASE_INSENSITIVE;Query
            = query new Query (Criteria.where("name").regex()pattern);//这样写也可以
            //Query query = new Query(Criteria.where("name").regex("三"));
            //模糊查询 where name like '三'
            List
            <User=> users . mongoTemplatefind(,queryUser .class);for
            ( User: user ) usersSystem {
                ..errprintln()user;}
            }
        
  • 分页查询
  •     void
        findPage ()//分页查询{
            Integer
            = pageNo 1 ;Integer
            = pageSize 2 ;Query
            = query new Query (Criteria.where("age").is(25));//查询记录数
            long
            = count . mongoTemplatecount(,queryUser .class);System
            ..errprintln("表中记录数量为:"+)count;//分页  skip:指定起始页,limit:指定每页记录数
            .
            queryskip((-pageNo1)*)pageSize.limit()pageSize;List
            <User=> users . mongoTemplatefind(,queryUser .class);for
            ( User: user ) usersSystem {
                ..errprintln()user;}
            }
        
  • 更新文档
  •     void
        testUpdate ()//根据id查询记录{
            User
            = user . mongoTemplatefindById("625cfda8fe25dc25be4edd26",User .class);//设置要修改的值
            .
            usersetName("裂空座");.
            usersetAge(30);.
            usersetEmail("246786324@qq.com");//修改
            Query
            = query new Query (Criteria.where("id").is(.usergetId()));Update
            = update new Update ();.
            updateset("name",.usergetName());.
            updateset("age",.usergetAge());.
            updateset("email",.usergetEmail());UpdateResult
            = upsert . mongoTemplateupsert(,query, updateUser .class);long
            = matchedCount . upsertgetMatchedCount();System
            ..errprintln("影响行数:"+)matchedCount;}
        
  • 删除文档
  •     void
        testRemove ()Query{
            = query new Query (Criteria.where("id").is("625cf65138b887613da7d143"));DeleteResult
            = remove . mongoTemplateremove(,queryUser .class);long
            = deletedCount . removegetDeletedCount();System
            ..errprintln("删除记录数量:"+)deletedCount;}
        
  • 插入文档
  • 5.2.基于MongoRepository的CRUD
        private
        UserRepository ; userRepository@Test
    
        void
        testInsert ()User {
            = user new User ();.
            usersetName("水箭龟");.
            usersetAge(12);User
            = save . userRepositorysave()user;System
            ..errprintln()save;}
        
  • 查询所有
  •     void
        testFind ()//查询User表中所有数据{
            List
            <User=> users . userRepositoryfindAll();for
            ( User: user ) usersSystem {
                ..errprintln()user;}
            }
        
  • 根据Id查找
  •     void
        testFindById ()//根据id查询{
            User
            = user . userRepositoryfindById("625cf664e8279d312cf32095").get();System
            ..errprintln()user;}
        
  • and查询
  •     void
        findUserListAnd ()//条件查询 where name = '喷火龙' and age = 11{
            User
            = user new User ();.
            usersetName("喷火龙");.
            usersetAge(11);Example
            <User=> example Example .of()user;List
            <User=> users . userRepositoryfindAll()example;for
            ( User: user1 ) usersSystem {
                ..errprintln()user1;}
            }
        
  • 模糊查询
  •     void
        testLike ()//模糊查询 where email like '126'{
            //设置模糊查询的匹配规则
            ExampleMatcher
            = matcher ExampleMatcher .matching().
                    withStringMatcher(.ExampleMatcher.StringMatcher)CONTAINING//containing包含 .
                    withIgnoreCase(true);//忽略大小写User
            = user new User ();.
            usersetEmail("126");Example
            <User=> example Example .of(,user)matcher;List
            <User=> users . userRepositoryfindAll()example;for
            ( User: user1 ) usersSystem {
                ..errprintln()user1;}
            }
        
  • 分页查询
  •     void
        findPage ()//分页查询{
            //page:0表示第一页,1表示第二也......
            Pageable
            = pageable PageRequest .of(1,3 );Page
            <User=> page . userRepositoryfindAll()pageable;int
            = totalPages . pagegetTotalPages();List
            <User=> users . pagegetContent();long
            = totalElements . pagegetTotalElements();System
            ..errprintln("总页数:"+)totalPages;System
            ..errprintln()users;System
            ..errprintln("总记录条数:"+)totalElements;}
        
  • 更新文档
  •     void
        testUpdate ()//根据id查询记录{
            User
            = user . userRepositoryfindById("625cf664e8279d312cf32095").get();.
            usersetAge(20);.
            usersetEmail("8888888@qq.com");//修改
            //save(): 如果id值存在就修改,如果id值不存在就添加
            User
            = save . userRepositorysave()user;System
            ..errprintln()save;}
        
  • 删除文档
  •     void
        testRemove ().{
            userRepositorydeleteById("625cf77371fb253316589586");//userRepository.deleteAll(); 删除所有
            }
        [+++]
    
    )
    File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
    File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
    File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
    MongoDB基本 *** 作_java_内存溢出

    MongoDB基本 *** 作

    MongoDB基本 *** 作,第1张

    文章目录
    • 1.Docker安装MongoDb
    • 2.数据库 *** 作
    • 3.集合 *** 作
    • 4.文档 *** 作
    • 5.SpringBoot集成MongoDB
      • 5.1.基于MongoTemplate 的CRUD
      • 5.2.基于MongoRepository的CRUD

    MongoDB中文文档

    SQL术语MongoDB术语说明
    databasedatabase数据库
    tablecollection数据库表/集合
    rowdocument数据记录行/文档
    columnfield数据字段/域
    indexindex索引
    table joins表连接,MongoDB不支持
    primary keyprimary key主键,MongoDB自动将_id字段设置为主键

    注意

    • 文档中的键/值对是有序的
    • MongoDB区分类型和大小写
    • MongoDB的文档不能有重复的键
    • 键不能含有
    • .和$有特别的意义,只有在特定环境下才能使用
    • (空字符)。这个字符用来表示键的结尾
    • 以下划线"_"开头的键是保留的(不是严格要求的)
    • #拉取镜像
    1.Docker安装MongoDb
    docker
    #创建和启动容器  pull mongo:latest
    
    docker
    = run -d --restart27017always -p #进入容器 :27017 --name mymongo -v /data/db:/data/db -d mongo
    
    docker
    exec #使用MongoDB客户端进行 *** 作  -it mymongo/bin/bash 
    
    #查询所有的数据库 
    mongo 
    
    db.help()
    show dbs 
    
    2.数据库 *** 作
    • Help查看命令提示 use 数据库名
    • 切换/创建数据库 show dbs
    • 查询所有数据库 db.getName()
    • 查看当前使用的数据库 db.stats()
    • 显示当前db状态 db.version()
    • 当前db版本db.getMongo
    • 查看当前db的链接机器地址 db.dropDatabase()
    • 删除当前使用数据库 db.createCollection( "集合名")
    3.集合 *** 作
    • 创建集合(表)show collections
    • 查看数据库中所有集合(表) db.getCollection("集合名")
    • 得到指定名称的集合 db.printCollectionStats()
    • 查看集合状态db.集合名.drop()
    • 删除集合 db.集合名.save({name:'zhangsan',age:21,sex:true})
    4.文档 *** 作
    • 插入文档 db.集合名.find()
    • 查询所有文档
    • 条件查询
    • (
    db.User.find"zhangsan"{name:})select
    相当于
    = * from User where name 'zhangsan' ;(
    
    db.User.find}{age:21'name', {'age':1, }:1)select
    相当于
    = name, age from User where age 21 ;(
    
    db.User.find)(.sort}{age:1)select
    相当于
    ; * from User order by age(
    
    db.User.find)(.skip0)(.limit3)select
    相当于
    2 * from User skip 3 limit (
    db.User.find$in{age:{[:21,26],32}})select
    相当于
    in * from User where age ( 2126, 32, )(
    db.User.find$gt{age:{}:20})(.count)select
    相当于
    ( count)*20 from User where age >;(
    
    db.User.find$or{[:}{age:21}, {age:28]})select
    相当于
    = * from User where age 21 = or age 28 (
    
    db.User.find"zs"{name:}, age:28)select
    相当于
    = * from User where name 'zs'= and age 28 ;
  • 更新文档
    • (
    db.User.update"zhangsan"{name:}$set, {}:{age:100, sex:0})=
    相当于
    update Userset age 100 =, sex 0 = where name 'user1' 
  • 删除文档
    • (
    根据id删除
    db.User.remove)id(
    删除所有
    db.User.remove}{)
  • 聚合 *** 作
    • 表达式
    db.User.createIndex({"name":1})
    描述实例$sum
    计算总和db.mycol.aggregate([{$group : {_id : “$by_user”, num_tutorial : {$sum : “$likes”}}}])$avg
    计算平均值db.mycol.aggregate([{$group : {_id : “$by_user”, num_tutorial : {$avg : “$likes”}}}])$min
    获取集合中所有文档对应值得最小值db.mycol.aggregate([{$group : {_id : “$by_user”, num_tutorial : {$min : “$likes”}}}])$max
    获取集合中所有文档对应值得最大值db.mycol.aggregate([{$group : {_id : “$by_user”, num_tutorial : {$max : “$likes”}}}])
    • 创建索引 <
    5.SpringBoot集成MongoDB

    1、创建SpringBoot工程

    2、导入依赖

    <dependency>
    	groupId>org.springframework.boot<groupId>
        artifactId>spring-boot-starter-data-mongodb<artifactId>
        version>2.6.6version>
    #配置mongoDB地址dependency>
    

    3、配置文件application.yml中添加

    spring
    :data
      :mongodb
        :#mongodb://192.168.140.100:27017/数据名.集合名
        	  uri
          :: mongodb://192.168.140.100
  • 添加文档
  • 27017/why_datebase.test
    5.1.基于MongoTemplate 的CRUD
      @Autowired
        private
        MongoTemplate ; mongoTemplate@Test
    
        void
        testInsert ()User {
            = user new User ();.
            usersetName("陈三");.
            usersetAge(25);//向User表中插入数据
            User
            = user1 . mongoTemplateinsert()user;}
        
  • 查询表中所有文档
    • @Test
        void
        testFind ()List{
            <User=> all . mongoTemplatefindAll(User.class);for
            ( User: user ) allSystem {
                ..errprintln()user;}
            }
        
  • 根据id查询
    • @Test
       void
        testFindById ()//根据id查询{
            User
            = user . mongoTemplatefindById("625c06dae63b0056f5f21fc8",User .class);System
            ..errprintln()user;}
        
  • and查询
    • @Test
        void
        findUserListAnd ()Query{
            = query new Query (Criteria.where("name").is("张三").and("age").is(25));//条件查询 where name = '张三' and age = 25
            List
            <User=> users . mongoTemplatefind(,queryUser .class);System
            ..errprintln()users;}
        
  • or查询
    • @Test
        void
        findUserListOr ()//条件查询:where name = '张三' or id = ‘625c066b8d584444626116ae’{
            Criteria
            = name Criteria .where("name").is("张三");Criteria
            = id Criteria .where("id").is("625c066b8d584444626116ae");Criteria
            = criteria new Criteria ();//合并or的查询条件
            .
            criteriaorOperator(,name)id;Query
            = query new Query ();.
            queryaddCriteria()criteria;List
            <User=> users . mongoTemplatefind(,queryUser .class);System
            ..errprintln()users;}
        
  • 模糊查询
    • @Test
        void
        testLike ()String{
            = name "三" ;String
            = regex String .format("%s%s%s","^.*",,name".*$");//Pattern.CASE_INSENSITIVE : 忽略大小写
            Pattern
            = pattern Pattern .compile(,regexPattern.)CASE_INSENSITIVE;Query
            = query new Query (Criteria.where("name").regex()pattern);//这样写也可以
            //Query query = new Query(Criteria.where("name").regex("三"));
            //模糊查询 where name like '三'
            List
            <User=> users . mongoTemplatefind(,queryUser .class);for
            ( User: user ) usersSystem {
                ..errprintln()user;}
            }
        
  • 分页查询
    • @Test
        void
        findPage ()//分页查询{
            Integer
            = pageNo 1 ;Integer
            = pageSize 2 ;Query
            = query new Query (Criteria.where("age").is(25));//查询记录数
            long
            = count . mongoTemplatecount(,queryUser .class);System
            ..errprintln("表中记录数量为:"+)count;//分页  skip:指定起始页,limit:指定每页记录数
            .
            queryskip((-pageNo1)*)pageSize.limit()pageSize;List
            <User=> users . mongoTemplatefind(,queryUser .class);for
            ( User: user ) usersSystem {
                ..errprintln()user;}
            }
        
  • 更新文档
    • @Test
        void
        testUpdate ()//根据id查询记录{
            User
            = user . mongoTemplatefindById("625cfda8fe25dc25be4edd26",User .class);//设置要修改的值
            .
            usersetName("裂空座");.
            usersetAge(30);.
            usersetEmail("246786324@qq.com");//修改
            Query
            = query new Query (Criteria.where("id").is(.usergetId()));Update
            = update new Update ();.
            updateset("name",.usergetName());.
            updateset("age",.usergetAge());.
            updateset("email",.usergetEmail());UpdateResult
            = upsert . mongoTemplateupsert(,query, updateUser .class);long
            = matchedCount . upsertgetMatchedCount();System
            ..errprintln("影响行数:"+)matchedCount;}
        
  • 删除文档
    • @Test
        void
        testRemove ()Query{
            = query new Query (Criteria.where("id").is("625cf65138b887613da7d143"));DeleteResult
            = remove . mongoTemplateremove(,queryUser .class);long
            = deletedCount . removegetDeletedCount();System
            ..errprintln("删除记录数量:"+)deletedCount;}
        
  • 插入文档
  • 5.2.基于MongoRepository的CRUD
      @Autowired
        private
        UserRepository ; userRepository@Test
    
        void
        testInsert ()User {
            = user new User ();.
            usersetName("水箭龟");.
            usersetAge(12);User
            = save . userRepositorysave()user;System
            ..errprintln()save;}
        
  • 查询所有
    • @Test
        void
        testFind ()//查询User表中所有数据{
            List
            <User=> users . userRepositoryfindAll();for
            ( User: user ) usersSystem {
                ..errprintln()user;}
            }
        
  • 根据Id查找
    • @Test
        void
        testFindById ()//根据id查询{
            User
            = user . userRepositoryfindById("625cf664e8279d312cf32095").get();System
            ..errprintln()user;}
        
  • and查询
    • @Test
        void
        findUserListAnd ()//条件查询 where name = '喷火龙' and age = 11{
            User
            = user new User ();.
            usersetName("喷火龙");.
            usersetAge(11);Example
            <User=> example Example .of()user;List
            <User=> users . userRepositoryfindAll()example;for
            ( User: user1 ) usersSystem {
                ..errprintln()user1;}
            }
        
  • 模糊查询
    • @Test
        void
        testLike ()//模糊查询 where email like '126'{
            //设置模糊查询的匹配规则
            ExampleMatcher
            = matcher ExampleMatcher .matching().
                    withStringMatcher(.ExampleMatcher.StringMatcher)CONTAINING//containing包含 .
                    withIgnoreCase(true);//忽略大小写User
            = user new User ();.
            usersetEmail("126");Example
            <User=> example Example .of(,user)matcher;List
            <User=> users . userRepositoryfindAll()example;for
            ( User: user1 ) usersSystem {
                ..errprintln()user1;}
            }
        
  • 分页查询
    • @Test
        void
        findPage ()//分页查询{
            //page:0表示第一页,1表示第二也......
            Pageable
            = pageable PageRequest .of(1,3 );Page
            <User=> page . userRepositoryfindAll()pageable;int
            = totalPages . pagegetTotalPages();List
            <User=> users . pagegetContent();long
            = totalElements . pagegetTotalElements();System
            ..errprintln("总页数:"+)totalPages;System
            ..errprintln()users;System
            ..errprintln("总记录条数:"+)totalElements;}
        
  • 更新文档
    • @Test
        void
        testUpdate ()//根据id查询记录{
            User
            = user . userRepositoryfindById("625cf664e8279d312cf32095").get();.
            usersetAge(20);.
            usersetEmail("8888888@qq.com");//修改
            //save(): 如果id值存在就修改,如果id值不存在就添加
            User
            = save . userRepositorysave()user;System
            ..errprintln()save;}
        
  • 删除文档
    • @Test
        void
        testRemove ().{
            userRepositorydeleteById("625cf77371fb253316589586");//userRepository.deleteAll(); 删除所有
            }
        
    

    欢迎分享,转载请注明来源:内存溢出

    原文地址: https://outofmemory.cn/langs/733884.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2022-04-27
    下一篇 2022-04-27

    发表评论

    登录后才能评论

    评论列表(0条)

    保存