天天看点

12个MongoDB的可视化工具,以及shell 操作脚本练习

一、准备好,本地安装MongoDB或者远程可连接的MongoDB服务器

客户端,可以是命令行工具,点击可下载,记得配置环境变量。
也可以是可视化工具,比较多哈

1.​​Robomongo​​,

2. ​​MongoBooster​​,

3. ​​NoSQLBooster​​

4.​​Studio 3T​​

5.​​MongoDB Compass​​

6.​​Nucleon Database Master​​

7.​​NoSQL Manager​​

8. ​​Mongo Management Studio​​

9. ​​MongoJS Query Analyzer​​

10.​​Nosqlclient​​

11.​​Cluster control​​

12. navicate 这里就不贴链接了,需要破解,我用的就是这个,支持Mysql,Oracle,MongoDB等多个数据库连接。

二、连接使用

MongoDb 和 SQL的对应关系图

12个MongoDB的可视化工具,以及shell 操作脚本练习

2.1 基础命令

show dbs ;

show databases;

admin                      0.000GB
test                       0.001GB
testData                   0.000GB
tonels_test                0.000GB      

use testData ; // 切换当前库

show collections; // 显示所有的collections

inventory
test2
testData
characters      

show users; // 打印当前数据库的用户列表。

show roles ; // 打印角色

2.2 CRUD操作

2.2.1 添加操作

插入一条数据

db.inventory.insertOne(
    {
        item: "canvas",
        qty: 100,
        tags: ["cotton"],
        size: {
            h: 28,
            w: 35.5,
            uom: "cm"
        }
    }
)      

插入多条数据

db.inventory.insertMany([
    {
        item: "journal",
        qty: 25,
        tags: ["blank", "red"],
        size: {
            h: 14,
            w: 21,
            uom: "cm"
        }
    },
    {
        item: "mat",
        qty: 85,
        tags: ["gray"],
        size: {
            h: 27.9,
            w: 35.5,
            uom: "cm"
        }
    },
    {
        item: "mousepad",
        qty: 25,
        tags: ["gel", "blue"],
        size: {
            h: 19,
            w: 22.85,
            uom: "cm"
        }
    }
])      

三种操作方式

db.collection.insertOne() // 将单个文档插入到集合中。

db.collection.insertMany() //将多个文档插入集合中。

db.collection.insert() // 将单个文档或多个文档插入集合中。

// 其他插入方法

db.collection.update()

db.collection.updateOne()

db.collection.updateMany()

db.collection.findAndModify()

db.collection.findOneAndUpdate()

db.collection.findOneAndReplace()

db.collection.save().

db.collection.bulkWrite()

2.2.2 查询操作

// 查找所有

db.inventory.find( {} )

db.inventory.find() // 对应 select *

// 1
{
    "_id": ObjectId("5d26b1b73739000067000358"),
    "item": "canvas",
    "qty": 100,
    "tags": [
        "cotton"
    ],
    "size": {
        "h": 28,
        "w": 35.5,
        "uom": "cm"
    }
}

// 2
{
    "_id": ObjectId("5d26b2493739000067000359"),
    "item": "journal",
    "qty": 25,
    "tags": [
        "blank",
        "red"
    ],
    "size": {
        "h": 14,
        "w": 21,
        "uom": "cm"
    }
}      

条件查询

db.inventory.find( { status: "D" } ) // select * from ..where      

In 查询

db.inventory.find( { status: { $in: [ "A", "D" ] } } )      

逻辑小于

db.inventory.find( { status: "A", qty: { $lt: 30 } } )      

多条件查询

db.inventory.find({
    $or: [{
        status: "A"
    }, {
        qty: {
            $lt: 30
        }
    }]
}) // SELECT * FROM inventory WHERE status = "A" OR qty < 30      

自定义返回问题,先插入测试数据

db.inventory.insertMany( [
  { item: "journal", status: "A", size: { h: 14, w: 21, uom: "cm" }, instock: [ { warehouse: "A", qty: 5 } ] },
  { item: "notebook", status: "A",  size: { h: 8.5, w: 11, uom: "in" }, instock: [ { warehouse: "C", qty: 5 } ] },
  { item: "paper", status: "D", size: { h: 8.5, w: 11, uom: "in" }, instock: [ { warehouse: "A", qty: 60 } ] },
  { item: "planner", status: "D", size: { h: 22.85, w: 30, uom: "cm" }, instock: [ { warehouse: "A", qty: 40 } ] },
  { item: "postcard", status: "A", size: { h: 10, w: 15.25, uom: "cm" }, instock: [ { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ] }
]);      

默认返回所有字段

db.inventory.find( { status: "A" } )      

自定义返回,默认会连带主键返回

db.inventory.find({
    status: "A"
}, {
    item: 1,
    status: 1
}) // 相当于 SELECT _id, item, status from inventory WHERE status = "A"      

返回数据为

// 1
{
    "_id": ObjectId("5d26ebf0373900006700038a"),
    "item": "journal",
    "status": "A"
}
// 2
{
    "_id": ObjectId("5d26ebf0373900006700038b"),
    "item": "notebook",
    "status": "A"
}      

可以不带主键返回

db.inventory.find(
 { status: "A"},
 { item: 1,status: 1,  _id: 0}
 )      

返回数据为

// 1
{
    "item": "journal",
    "status": "A"
}
// 2
{
    "item": "notebook",
    "status": "A"
}      
2.2.3 删除操作

删除所有的数据

db.test2.deleteMany({})      

只删除一个

db.inventory.deleteOne( { status: "D" } )      
2.2.4 修改操作

Update 操作

db.collection.updateOne()

db.collection.updateMany()

db.collection.replaceOne()

如果有多个数据,只会更新一个,updateMany才会更新多个

db.inventory.updateOne(
   { item: "paper" },
   {
     $set: { "size.uom": "cm", status: "P" },
     $currentDate: { lastModified: true }
   }
)      
db.inventory.replaceOne(
   { item: "paper" },
   { item: "paper", instock: [ { warehouse: "A", qty: 60 }, { warehouse: "B", qty: 40 } ] }
)      
db.inventory.replaceMany(
   { item: "paper" },
   { item: "paper", instock: [ { warehouse: "A", qty: 60 }, { warehouse: "B", qty: 40 } ] }
)      

​​下一篇 MongoDbRepository的常用AP操作和易错点​​

继续阅读