资讯专栏INFORMATION COLUMN

MongoDB入门

Hujiawei / 2331人阅读

摘要:是由编写的基于分布式文件存储的非关系型数据库,将数据存储为一个文档,数据结构由键值对组成,类似于对象。数据存储量大时,丢失率较高,适合存储一些不太重要的信息。安装以操作系统为例,安装。去官网下载客户端,这里下载的是。

MongoDB是由 C++ 编写的基于分布式文件存储的非关系型数据库(NoSQL),将数据存储为一个文档,数据结构由键值(key=>value)对组成,类似于 JSON 对象。MongoDB 与其他关系型数据库相比,关系型数据库必须创建表和字段,否则无法使用,但是mongodb属于“无状态模式”,结构不需要设计,会自动创建数据库和集合,直接使用即可,存什么东西取决于我们自己向他传入什么(当不存在则创建,不需要手动去创建)。MongoDB 数据存储量大时,丢失率较高,适合存储一些不太重要的信息。市面上用MongoDB的有纽约时报、优酷视频等。

安装MongoDB

以 Windows 10 操作系统为例,安装MongoDB。

去官网 https://www.mongodb.com/downl... 下载客户端,这里下载的是 mongodb-win32-x86_64-2008plus-ssl-3.2.10-signed.msi 。

安装在 C:Program FilesMongoDBServer3.2bin 目录下。

添加系统环境变量:此电脑=>属性=>高级系统设置=>环境变量=>系统变量=>Path=>新建=>C:Program FilesMongoDBServer3.2bin 。

在 D 盘创建 mongodb-data 文件夹。

在 C:Program FilesMongoDBServer3.2bin 目录下运行 $ mongod --dbpath D:mongodb-data

批处理: 新建文件 mongod批处理命令.bat ,内容为 mongod --dbpath D:mongodb-data 或为 C:Program FilesMongoDBServer3.2binmongod --dbpath D:mongodb-data 。点击运行即可。

安装 NoSQL Manager for MongoDB 。 https://www.mongodbmanager.co... 下载免费版安装。

MongoDB的API

假设存在数据库 shop 有集合 goods。

$ mongo

$ show dbs

$ use shop

$ db.goods.find() 查询

$ db.goods.findOne() 查询一条数据

$ db.goods.find({"name": "XXX"}) 查询name为XXX的所有数据

$ db.goods.find({"name": "XXX"},{"_id": 0}) 查询结果不显示 _id

$ db.goods.find({"name": /X/}) 查询name包括X的数据

$ db.goods.find({"name":/米/},{"name":1}).limit(3) 查询结果只显示name的3条数据

$ db.goods.find({"price": {"$gte":25,"$lte":27}) 查询price在25-27之间的数据

$ db.goods.find({"country":{"$ne": "China"}}) 查询country不是China的数据

$ db.goods.insert({"name": "XXX"}) 增加{"name": "XXX"}这条数据

$ db.googs.remove({/* 查询条件 */}) 删除

$ db.goods.update({/* 查询条件 */},{"$set": {"name": "newName"}) 更新

$ db.goods.count({/* 查询条件 */}

其他查询条件

{"country": {"$in": ["China", "USA"]} country是数组的某一个,相反就是$nin

{"$or":[{"c":{"$gte":85}},{"e":{"$gte":90}}]} c>85或者e>90

{"color":{"$all":["red","black"]}} color有red和black,两者都有

{"name":{"$not":/li/i} name不存在li,$not 可以反正任何地方取反

{"books.1":"JS"} books是数组,第二项是JS

{"area.province":"sc"} area是对象,属性province是sc

{"books":{"$size":4}} books的长度为4

备份与还原

把shop备份到D:data:$ mongodump -h 127.0.0.1:27017 -d shop -o D:data

从D:data还原shop: mongorestore -h 127.0.0.1:27017 -d shop D:data

导入数据

另起命令行,不是在mongo里面 $ mongoimport --db mydbs --collection product --drop --file file是导入json文件的路径(),注意--drop是先删除后导入,也可以不用--drop不删除直接导入。

Nodejs操作MongoDB
const MongoClient = require("mongodb").MongoClient;
const express = require("express");
const app = express();
const dbName = "mongodb://localhost:27017"; // mongodb的默认端口是27017
// connect --> insert、remove、update、find -->close
app.get("/", (req, res) => {
    MongoClient.connect(dbName, (err, db) => {
        if (err) { // err为一串错误,db为null
            console.log("连接失败");
            return;
        }
        // 否则就是err为null,db为一串数据
        console.log("连接成功");
        // 在mydata的bbs集合(表)中插入一条数据,不存在bbs则创建
        db.db("mydata").collection("bbs").insertOne({
            "name": "myfirst"
        }, (err, result) => {
            if (err) {
                console.log("数据库写入失败");
                return;
            }
            console.log("成功插入");
            db.close();
        });
    });
    res.end();
});
app.listen(3000);  

有参数的

const MongoClient = require("mongodb").MongoClient
const express = require("express")
const app = express()
const dbName = "mongodb://localhost:27017"

app.set("view engine", "ejs");

app.get("/add", (req,res)=>{
    res.render("add"); // views目录下的add.ejs
})

app.get("/manage",(req,res)=>{
    let {name, age, sex} = req.query;
    MongoClient.connect(dbName,(err,db)=>{
        if(err)return;
        
        res.writeHead(200,{"Content-type": "text/html;charset=utf-8"});
        res.write("连接数据库成功");
        db.db("dnedu").collection("bbs").insertOne({name,age,sex},(err,result)=>{
            if(err)return;

            res.end();
            db.close();
        })
    })
})

app.listen(80);



姓名:

年龄:

性别:

数据变化可在 NoSQL Manager for MongoDB 查看。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/19370.html

相关文章

  • MongoDB最简单的入门教程之五-通过Restful API访问MongoDB

    摘要:通过前面四篇的学习,我们已经在本地安装了一个数据库,并且通过一个简单的应用的单元测试,插入了几条记录到中,并通过查看到了插入的数据。读操作最终将会使用我们在最简单的入门教程之三使用代码往里插入数据里介绍的方法,即通过注入的实例完成对的操作。 通过前面四篇的学习,我们已经在本地安装了一个MongoDB数据库,并且通过一个简单的Spring boot应用的单元测试,插入了几条记录到Mong...

    xeblog 评论0 收藏0
  • MongoDB最简单的入门教程之五-通过Restful API访问MongoDB

    摘要:通过前面四篇的学习,我们已经在本地安装了一个数据库,并且通过一个简单的应用的单元测试,插入了几条记录到中,并通过查看到了插入的数据。读操作最终将会使用我们在最简单的入门教程之三使用代码往里插入数据里介绍的方法,即通过注入的实例完成对的操作。 通过前面四篇的学习,我们已经在本地安装了一个MongoDB数据库,并且通过一个简单的Spring boot应用的单元测试,插入了几条记录到Mong...

    xiaolinbang 评论0 收藏0
  • MongoDB最简单的入门教程之三 使用Java代码往MongoDB里插入数据

    摘要:前两篇教程我们介绍了如何搭建的本地环境最简单的入门教程之一环境搭建以及如何用读取里的记录最简单的入门教程之二使用访问这篇教程我们会介绍如何使用代码来连接。代码如下和教程二相比,上述代码的方法里还展示了如何用代码给数据库里增加记录。 前两篇教程我们介绍了如何搭建MongoDB的本地环境: MongoDB最简单的入门教程之一 环境搭建 以及如何用nodejs读取MongoDB里的记录: M...

    Kylin_Mountain 评论0 收藏0
  • MongoDB最简单的入门教程之三 使用Java代码往MongoDB里插入数据

    摘要:前两篇教程我们介绍了如何搭建的本地环境最简单的入门教程之一环境搭建以及如何用读取里的记录最简单的入门教程之二使用访问这篇教程我们会介绍如何使用代码来连接。代码如下和教程二相比,上述代码的方法里还展示了如何用代码给数据库里增加记录。 前两篇教程我们介绍了如何搭建MongoDB的本地环境: MongoDB最简单的入门教程之一 环境搭建 以及如何用nodejs读取MongoDB里的记录: M...

    Hegel_Gu 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<