MongoDB的引入

Posted So istes immer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB的引入相关的知识,希望对你有一定的参考价值。

目录

1.简介

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。

非关系数据库当中功能最丰富,最像关系数据库的。

存储结构如下
每个数据库都是一个对象,一个数据库中可以有多个collections(集合),也就是表
一个集合中可以有多个表记录

{
  a: {
    users: [
      {name: '张三', age: 15},
      {name: '张四', age: 18},
      {name: '张五', age: 14},
      {name: '张六', age: 17}
      ...
    ],
    products: [
    ...
    ]
  },
  b: {
  }
}

安装就去官网下载社区版的,如果想在命令行工具如cmd中使用mongodb,需要配置环境变量(将bin文件夹的位置放在环境变量的path中)

2.启动和关闭服务

启动
mongodb默认执行它所在盘符根目录下的/data/db作为自己的数据存储目录
所以在第一次执行该命令之前先自己手动新建一个 /data/db
如果想要修改默认的数据存储目录:mongodb --dbpath=数据存储目录路径
完了输入一条mongod命令即可开启服务

停止
ctrl+c或者关闭命令行工具

3.连接和退出数据库

默认连接本机的Mongo服务:mongo

退出连接:exit

4.基本命令

显示所有数据库:show dbs

查看当前操作的数据库:db  

切换到指定的数据库(如果没有该数据库会新建):use 数据库名称

插入数据举例

> db.students.insertOne({"name":"fyx"})
{
        "acknowledged" : true,
        "insertedId" : ObjectId("616d53b41fb0f20f27df21f8")
}

查找数据举例

> db.students.find()
{ "_id" : ObjectId("616d53b41fb0f20f27df21f8"), "name" : "fyx" }

 5.在Node中操作MongoDB

可以使用mongoose这个第三方包,该包基于MongoDB官方的mongodb包再次做了一层封装

安装:npm i mongoose

demo.js

const mongoose = require('mongoose');
// 连接数据库
mongoose.connect('mongodb://localhost/test');
// 创建一个模型,其实就是在设计数据库
const Cat = mongoose.model('Cat', { name: String });
// 实例化一个Cat
const kitty = new Cat({ name: 'Zildjian' });
// 持久化保存kitty实例
kitty.save().then(() => console.log('meow'));

运行demo.js

测试  

> use test
switched to db test
> db
test
> show collections
cats
> db.cats.find()
{ "_id" : ObjectId("616d59acdfaf1b77ecc9a106"), "name" : "Zildjian", "__v" : 0 }

6.mongoDB数据库的增删改查

const mongoose = require('mongoose')
var Schema = mongoose.Schema
// 连接test数据库
mongoose.connect('mongodb://localhost/test')
//设计表结构,字段名称就是表的属性名称
var userSchema = new Schema({
	username: {
		type: String,
		required: true
	},
	password: {
		type: String,
		required: true
	},
	email: {
		type: String
	}
})
// 将Schema发布为模型
// 第一个参数要用大写名词单数表示数据库名称,mongoose会自动将该字符串转成小写复数的格式
// 例如这里的User会变成users
var User = mongoose.model('User', userSchema)

// 增加数据
var admin = new User({
	username: 'zs',
	password: '123456',
	email: 'admin@admin.com'
})

admin.save(function(err, ret) {
	if (err) {
		console.log('保存失败')
	} else {
		console.log('保存成功')
	}
})

// 查询数据
// 查询所有,返回的是一个数组
User.find(function(err, ret) {
	if(err) {
		console.log('查询失败')
	} else {
		console.log(ret)
	}
})

// 按条件查询,返回的是一个对象
User.findOne({
	username: 'zs'
}, function(err, ret) {
	if(err) {
		console.log('查询失败')
	} else {
		console.log(ret)
	}	
})

// 删除数据
User.remove({
	username: 'zs'
}, function(err, ret) {
	if(err) {
		console.log("删除失败")
	} else {
		console.log("删除成功")
	}
})

// 更新数据
User.findByIdAndUpdate('', {
	password: '123'
}, function(err, ret) {
	if(err) {
		console.log('更新失败')
	} else {
		console.log('更新成功')
	}
})

以上是关于MongoDB的引入的主要内容,如果未能解决你的问题,请参考以下文章

使用 Git 来管理 Xcode 中的代码片段

thymeleaf引入公共页面的某个片段

MongoDB PHP

ios - Heroku 和 MongoDb 上的自定义解析服务器错误 3080:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项

如何使用模块化代码片段中的LeakCanary检测内存泄漏?

mongodb关联查询