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的引入的主要内容,如果未能解决你的问题,请参考以下文章
ios - Heroku 和 MongoDb 上的自定义解析服务器错误 3080:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项