mongodb的远程访问和基本使用

简介: MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是可以应用于各种规模的企业、
各个行业以及各类应用程序的开源数据库。作为一个适用于敏捷开发的数据库,
MongoDB的数据模式可以随着应用程序的发展而灵活地更新。

1.使用docker中mongodb

1.搜索并下载镜像

 docker search  mongodb
 docker pull mongo        //默认最新版本
 docker images              //查看镜像
 docker run -d -p 27017:27017 
		--name mongodb-text
     -v $PWD/data:/data/db 
     -v $PWD/conf:/data/configdb 
     -v $PWD/logs:/data/log/ 3068f6bb852e 
     -f /data/configdb/mongodb.conf               #指定配置文件
 docker ps #查看是否启动成功

如图1

如果你在局域网下想远程访问的话访问时失败的,原因就是mongo配置只允许本地的访问所以需要修改配置。

2.修改配置

docker exec -it [容器id或者名称]  /bin/bash  #切换到mongo容器中
#更新源
apt-get update
# 安装 vim
apt-get install vim
# 修改 mongo 配置文件
vim /etc/mongod.conf.orig

将配置文件中的bindid= "127.0.0.1" 改成0.0.0.0注意前面有一个空格。问题解决。

3.可以使用Robot图形化界面连接。

2. Mongo常用命令

(1)创建数据库,以dangdb为例,数据库为dangdb,集合为dang

use dangdb

(2)插入数据 NumberInt() 为整形,默认浮点型,_id可以不写,也可以自己指定。

db.dang.insert({_id:"2",name:"dang",age:NumberInt(21)})
(3)查询数据
db.dang.find({_id:"2"})
db.dang.findOne({_id:"2"})
db.dang.find({_id:2).limit(3)

(4)修改数据

db.dangle.update(条件:修改后数据)

(5)删除数据

db.dang.remove({_id:"2"})

MongoDB的模糊查询是通过正则表达式的方式实现的。格式为:

/模糊查询字符串/

(6)不等于命令

db.集合名称.find({ "field" : { $gt: value }}) // 大于: field > value

db.集合名称.find({ "field" : { $lt: value }}) // 小于: field < value

db.集合名称.find({ "field" : { $gte: value }}) // 大于等于: field >= value

db.集合名称.find({ "field" : { $lte: value }}) // 小于等于: field <= value

db.集合名称.find({ "field" : { $ne: value }}) // 不等于: field != value

我们如果需要查询同时满足两个以上条件,需要使用$and操作符将条件进行关联。(相

当于SQL的and)

格式为:

$and:[ { },{ },{ } ]

示例:查询吐槽集合中visits大于等于1000 并且小于2000的文档

如果两个以上条件之间是或者的关系,我们使用 操作符进行关联,与前面and的使用

方式相同

格式为:

$or:[ { },{ },{ } ]

排序

我们想要将结果排序可以用==sort==

db.集合名称.find({}).sort({'字段1':1})  #1升序,-1降序  
db.集合名称.find({}).sort({'字段1':1,'字段2':-1})  #先按照字段1进行排序,当字段1的值相同时,我们进行比较字段2  

通过投影我们只查询我们需要的字段

db.集合名称.find({})  #我们会查询所有数据
db.集合名称.find({},{name:1})  #我们只会查询name=aa的数据

3. java操作mongodb

  1. (1)创建工程 mongoDemo, 引入依赖

    <dependency> 
    <groupId>org.mongodb</groupId> 
    <artifactId>mongodb‐driver</artifactId> 
    <version>3.6.3</version> 
    </dependency> 
    

    (2)创建测试类

    public class javaMongodb {
     @Test
        public  void text1(){
         //获取连接
            MongoClient mc=new MongoClient("192.168.0.200");
            //连接数据库,我们的数据库可以不存在
            MongoDatabase db = mc.getDatabase("dangledb");
            //生成集合如果我们的数据库不存在次步就会给我们创建出来
            //db.createCollection("dangle");
            //使用dangle集合
            MongoCollection<Document> dl = db.getCollection("dangle");
            //操作文档
            for (int i = 0; i < 10; i++) {
                dl.insertOne(new Document("_id",i++).append("name","党乐").append("age",18));
            }
        }
        @Test   //查找
        public void text2(){
            MongoClient mc=new MongoClient("192.168.0.200");
            MongoDatabase db = mc.getDatabase("dangledb");
            MongoCollection<Document> dl = db.getCollection("dangle");
            FindIterable<Document> documents = dl.find();
            for(Document document:documents){
             System.out.println(document);
            }
        }
        @Test   //更新
        public void text3(){
            MongoClient mc=new MongoClient("192.168.0.200");
            MongoDatabase db = mc.getDatabase("dangledb");
            MongoCollection<Document> dl = db.getCollection("dangle");
            //更新操作,查找_id为0的
            dl.updateOne(Filters.eq("_id",0),new Document("$set",new Document("name","dl")));
    
        }
        @Test   //删除
        public void text4(){
            MongoClient mc=new MongoClient("192.168.0.200");
            MongoDatabase db = mc.getDatabase("dangledb");
            MongoCollection<Document> dl = db.getCollection("dangle");
            dl.deleteOne(new Document("_id",1));
        }
    
# 基础  Linux 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×