正在搬运下一页::>_<:: . . .

Hello MongoDB


HelloMongoDB - MongoDB的学习之路(还很长)

官网:https://www.mongodb.com/try

一.安装和使用

进入官网,一般本地使用的话还是选择On-Premises,学习的话下载社区版就够用了。

我使用的是社区版msi安装,版本v4.4.2。

安装路径最好还是custom,下一步网不好的话还是不勾选**”install mongoDB compass”**图形界面(其实在国内网都好不到哪去,不建议在这里下载浪费时间),后面可以自己单独去官网下载,用IDM的话还是可以几分钟就下好的。

1.配置MongoDB目录结构

以Windows操作系统为例,在安装MongoDB的盘符的根目录创建一个 data 的目录然后在 data 目录里创建 db 目录:

比如我安装在G盘下

g:
md "\data\db"

在安装目录的bin路径下执行:

G:\MongoDB\bin\mongod --dbpath g:\data\db

2.命令行下的使用

在bin目录下使用命令mongo即可进入命令行客户端,进行增删改查等。

当然也可以将这个目录加入到环境变量方便在任何地方打开。

3.安装MongoDB服务

在data文件夹下创建log文件夹,mongodb安装目录下创建配置文件mongod.cfg内容如下:

systemLog:
    destination: file
    path: g:\data\log\mongod.log
storage:
    dbPath: g:\data\db

也可以配置ip、端口等更详细的内容,参考:https://www.cnblogs.com/phpandmysql/p/7763394.html

然后bin下执行:

mongod --config "C:\mongodb\mongod.cfg" --install

二.密码权限设置

1.先看看之前配置是否正确可以查看数据库

在执行mongo命令后输入:

show dbs

可以看到admin库:

2.进入admin数据库

use admin

3.创建管理员账户

db.createUser({ user: "admin", pwd: "password", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })

这里自己设置用户名和密码,该账户角色是userAdminAnyDatabase,用来管理其他账户。

4.创建root账户,管理数据库,相当于mysql的root账户

db.createUser({user: "root",pwd: "password", roles: [ { role: "root", db: "admin" } ]})

5.(可选)给某个数据库创建管理员

比如使用fine数据库,先进入之:

use fine

然后创建账户:

db.createUser({user: "user",pwd: "password",roles: [ { role: "dbOwner", db: "fine" } ]})

这里的role选dbOwner的话代表拥有该数据库的最高权限,选readWrite的话顾名思义只有读写权。

6.切换用户

use admin
db.auth("admin","password")

7.使用url连接mongodb

mongodb://user:password2@localhost/database

三.使用MongoDB Compass

1.官网下载安装即可。

2.连接

按以下格式连接

如果没设置密码,也可以直接连接(不过不建议,如果在公网上极其容易被黑然后被勒索比特币😂):

mongodb://127.0.0.1:27017

3.手动输入每一项的连接方式

点击右上角的Fill in connection fields individually,下面选用户名密码即可。

4.操作

图形界面很方便明了。

image-20201231113242418

四.MongoDB语法

1.查看所有数据库

show dbs

2.进入数据库

use {dbname}

3.查询数据

db.{collection}.find({query}, {projection})
  • query :可选,使用查询操作符指定查询条件。
  • projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。

可以在后面再加一个格式化方便阅读,语法如下:

db.{collection}.find({query}, {projection}).pretty() 

4.查询条件语法

等于:find({"key":"value"})
小于:find({"key":{$lt:100}})
小于等于:find({"key":{$lte:100}})
大于:find({"key":{$gt:100}})
大于等于:find({"key":{$gte:100}})
不大于:find({"key":{$ne:100}})

and条件:

find({key1:value1, key2:value2})

or条件:

find({$or: [{key1: value1}, {key2:value2}]})

两者结合:

find({"key1": {$gt:100}, $or: [{"key2": "10"},{"key3": "20"}]})

五.java中使用

1.准备

使用mongo-java-driver-3.12.7为例,配置依赖。

2.数据库连接

可以使用lambda表达式创建mongo client:

MongoClient client = MongoClients.create(
                MongoClientSettings.builder()
                        .applyToClusterSettings(builder -> builder.hosts(Collections.singletonList(new ServerAddress({host}, {port}))))
                        .credential(MongoCredential.createCredential({{username}, {authDB}, {pwd}.toCharArray()))
                        .build()
        );

3.获取数据库

MongoDatabase db = client.getDatabase({db});

4.获取文档集合

MongoCollection<Document> col = db.getCollection({collection});

5.创建过滤条件(可选)

List<Bson> filter = new LinkedList<>();
filter.add(eq({key}, {value}));

6.按条件查询出文档

FindIterable<Document> documents = coll.find(and(filter)).projection(new BasicDBObject("_id", 0));

这里的projection后面值为0表示不查询_id字段

7.对文档遍历

MongoCursor<Document> cursor = documents.iterator();
while (cursor.hasNext()) {
            Document next = cursor.next();
            Set<String> keys = next.keySet();
            for (String key : keys) {
                Object o = next.get(key);
                //dosomething...
}

8.关闭客户端防止内存泄漏

client.close();

待更新…


畅所欲言
 上一篇
《秒速五厘米》 《秒速五厘米》
《秒速五厘米》 鼓起勇气抱着可能会哭出来的决心看了一直不敢碰的《秒速五厘米》,每一话完都以为是铺垫,后面才是正片,可是当ed响起的时候才回过神来。这就完了?心里想到。 这不是一部像《你的名字》那样直击心灵的剧,不是将遗憾和惋惜直接摆在眼
下一篇 
用JProfiler进行dump分析记 用JProfiler进行dump分析记
dump分析 工具:JProfilter10.0 激活码:L-qOQRsFcEcF-LqVM1lqxQm#1437 0.使用工具JProfiler载入dump.hprof文件 1.首先打开Biggest Objects,看到一个6G的Ar
2020-12-30
  目录