MongoDb 安装

tar -zxvf mongodb-linux-x86_64-rhel70-4.2.23.tgz

vim /etc/profile
# 添加mongodb环境变量
export PATH=$PATH:/usr/local/mongodb/bin
# 重新加载配置文件
source /etc/profile
# 检查环境变量
echo $PATH


vim /etc/mongodb.conf
#指定数据库路径
dbpath=/usr/local/mongodb/data
#指定MongoDB日志文件
logpath=/usr/local/mongodb/logs/mongodb.log
# 使用追加的方式写日志
logappend=true
#端口号
port=27017 
#方便外网访问,外网所有ip都可以访问,不要写成固定的linux的ip
bind_ip=0.0.0.0
fork=true # 以守护进程的方式运行MongoDB,创建服务器进程
#auth=true #启用用户验证
#bind_ip=0.0.0.0 #绑定服务IP,若绑定127.0.0.1,则只能本机访问,不指定则默认本地所有IP

启动
./mongod -f /etc/mongodb.conf

启动之后还不能访问,需要安装mongosh

连接mogodb,使用 mongosh

vi /etc/yum.repos.d/mongodb-org-6.0.repo

[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
yum install -y mongodb-mongosh
 
 执行
 mongosh
 连接到不同端口
 mongosh --port 28015

设置密码:

1.auth改为false
show dbs

test> show dbs
admin   40.00 KiB
config  12.00 KiB
local   72.00 KiB

查看用户
show users


#切换到admin数据库
use admin
#使用db.createUser()函数在admin数据库下创建用户
db.createUser({user:"root",pwd:"root",roles:[{role:"userAdminAnyDatabase",db:"admin"},{role:"readWriteAnyDatabase",db:"admin"}]})


#进行验证,认证通过返回:1
db.auth('root','root')

用户操作

#切换到admin数据库
use admin
#查看所有用户
db.system.users.find()

#使用db.createUser()函数在admin数据库下创建用户
db.createUser({user:"root",pwd:"root",roles:[{role:"userAdminAnyDatabase",db:"admin"},{role:"readWriteAnyDatabase",db:"admin"}]})

#删除用户 删除时需要切换到该账户所在的数据库
db.system.users.remove({user:"user"})

数据库操作

切换数据库,有则切换,没有则创建,
use DATABASE_NAME
查看所有的db,有些没有数据的DB是查询不到的
show dbs
查看当前DB名称
db
删除数据库
db.dropDatabase();

创建集合
db.createCollection("raintest")
查看集合
show tables

操作手册cdb.collection.find() — MongoDB Manual

Java 访问

官方提供的Java访问驱动maven版本

 Quick Start — Java Sync

一个简单的示例: 


import static com.mongodb.client.model.Filters.eq;


public class Mongodb {
    public static void mongoQueryAll() {
        String uri = "mongodb://192.168.182.142:27017";
        try (MongoClient mongoClient = MongoClients.create(uri)) {
            MongoDatabase database = mongoClient.getDatabase("sample_mflix");
            MongoCollection<Document> collection = database.getCollection("movies");
            Document doc = collection.find(eq("title", "Back to the Future")).first();
            if (doc != null) {
                System.out.println(doc.toJson());
            } else {
                System.out.println("No matching documents found.");
            }
            MongoIterable<String> databaseNames = mongoClient.listDatabaseNames();
            for (String s : databaseNames) {
                System.out.println(s);
            }
//            2.打开数据库test
            MongoDatabase db = mongoClient.getDatabase("raintest");

            db.createCollection("test22222");
            System.out.println("集合创建成功");
        }
    }

    public static void main(String[] args) {
        mongoQueryAll();
    }
}

创建集合并添加document

    <dependencies>
        <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongodb-driver-sync</artifactId>
            <version>4.9.1</version>
        </dependency>
    </dependencies>

public class MongoDBJDBC {
     public static void main(String[] args) {
        try{
            // 连接到 mongodb 服务
//            MongoClient mongoClient = new MongoClient( "192.168.182.142" , 27017 );
            String uri = "mongodb://192.168.182.142:27017";
            MongoClient mongoClient = MongoClients.create(uri);
            // 连接到数据库
            MongoDatabase mongoDatabase = mongoClient.getDatabase("collection_test");

            System.out.println( mongoDatabase.getCollection("coll_test1"));
            if(mongoDatabase.getCollection("coll_test1") == null ){
                mongoDatabase.createCollection("coll_test1");
            }

            MongoCollection<Document> coll1 = mongoDatabase.getCollection("coll_test1");

            // 创建文档
            Map<String, Object> map = new HashMap<>();
            map.put("_id", "13");
            map.put("name", "zhaoyun");
            map.put("age", 18);
            map.put("sex", 1);
            Document document = new Document(map);
            //向集合中插入文档
            coll1.insertOne(document);
            System.out.println(coll1.countDocuments());

            //3.获取集合
            MongoCollection<Document> collection = mongoDatabase.getCollection("coll_test1");
            //4.查询获取文档集合
            FindIterable<Document> documents = collection.find();
            //5.循环遍历
            for (Document doc : documents) {
                System.out.println(doc);
            }
            //6.关闭连接
            mongoClient.close();

        }catch(Exception e){
            System.err.println( e.getClass().getName() + ": " + e.getMessage() );
        }
    }
}
问题:
1.问题获取集合之后如何判断该集合是否存在?
用listCollectionNames 查找集合的名字,如果名字存在则说明集合存在否则集合不存在,创建集合
 for (String name : db.listCollectionNames()) {
                System.out.println(name);
                if("test22222".equals(name)){
                    create =false;
                }
            }
            if(create){
                db.createCollection("test22222");
                System.out.println("集合创建成功");
            }

2.如何给一个集合中的所有文档增加字段?

 思路是:更新所有集合并设置字段。

文中使用的是增加判断条件titl为空的时候可以查找出来所有的数据,其实还可以用一个空的Document对象

package com.rain.insert;

import com.mongodb.MongoException;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.UpdateOptions;
import com.mongodb.client.model.Updates;
import com.mongodb.client.result.UpdateResult;
import org.bson.Document;
import org.bson.conversions.Bson;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import static com.mongodb.client.model.Filters.gt;
import static com.mongodb.client.model.Filters.ne;

public class AddOneFild {
    private final static Logger logger = LoggerFactory.getLogger(AddOneFild.class);

    public static void main(String[] args) {
        String uri = "mongodb://192.168.182.142:27017";
        try (MongoClient mongoClient = MongoClients.create(uri)) {
            MongoDatabase database = mongoClient.getDatabase("sample_mflix");
            MongoCollection<Document> collection = database.getCollection("movies");
            Bson query = ne("title", ""); // 利用title不为空过滤出来所有记录
            Bson updates = Updates.combine(
                    Updates.set("num_mflix_comments", 60), // 需要新增的字段
                    Updates.addToSet("genres", "Frequently Discussed"),
                    Updates.currentTimestamp("lastUpdated"));

            UpdateOptions options = new UpdateOptions().upsert(true);
            try {
                UpdateResult result = collection.updateMany(query, updates, options);
                logger.info("Modified document count: " + result.getModifiedCount());
            } catch (MongoException me) {
                logger.info("Unable to update due to an error: " + me);
            }

        }

    }
}

其实还可以用一个空的Document对象 

package com.rain.insert;

import com.mongodb.MongoException;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.UpdateOptions;
import com.mongodb.client.model.Updates;
import com.mongodb.client.result.UpdateResult;
import org.bson.Document;
import org.bson.conversions.Bson;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import static com.mongodb.client.model.Filters.gt;
import static com.mongodb.client.model.Filters.ne;

/**
 * 更新是传递一个空的文档对象,也就更新所有
 */
public class AddOneFild {
    private final static Logger logger = LoggerFactory.getLogger(AddOneFild.class);

    public static void main(String[] args) {
        String uri = "mongodb://192.168.182.142:27017";
        try (MongoClient mongoClient = MongoClients.create(uri)) {
            MongoDatabase database = mongoClient.getDatabase("sample_mflix");
            MongoCollection<Document> collection = database.getCollection("movies");
            Bson query = ne("title", ""); // 利用title不为空过滤出来所有记录

            Document doc = new Document(); // 使用空的文档对象
            Bson updates = Updates.combine(
                    Updates.set("test_add_filed", 60), // 需要新增的字段
                    Updates.addToSet("genres", "Frequently Discussed"),
                    Updates.currentTimestamp("lastUpdated"));

            UpdateOptions options = new UpdateOptions().upsert(true);
            try {
                UpdateResult result = collection.updateMany(doc, updates, options);
                logger.info("Modified document count: " + result.getModifiedCount());
            } catch (MongoException me) {
                logger.info("Unable to update due to an error: " + me);
            }

        }

    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值