数据库 => 集合 => json数据(行)
mongo 连接数据库,以便于管理/操作
show dbs 查看所有数据库
mongodb内置数据库: amdin config local 不要动
use 数据库名 进入该数据库(操作该数据库前必须先进入) , 若无该数据库则创建
只有进入了某个数据库,以下的 db.xxx 命令才能使用
db.dropDatabase() 删除当前数据库
show collections 查看当前数据库的所有集合
db.集合名.drop() 删除当前集合
db.集合名.insert( { “name”: “juln” } ) 在某集合中插入内容,若无该集合则创建
db.集合名.find() 查看某集合的所有数据
db.集合名.find( { “name”: “juln” } ) 查找指定数据
db.集合名.find( { “name”: /ju/ } ) 模糊查询,正则
db.集合名.find( { “age”: { $lt: 22 } } ) $lt为 age<22 , $gt为 age>22 , $gte 大于等于 , $lte 小于等于 , { $lt: 22, $gt: 25 } 大于22小于25
db.集合名.find( {}, { name: 1, age: 1 } ) 查找后只显示部分列
db.集合名.find().sort( { age: 1 } ) 升序降序,1为升序,-1为降序
db.集合名.find().limit(5) 查询前5条数据
db.集合名.find().skip(10) 跳过前10条数据再查询
db.集合名.find().skip(10).limit(2) 查询第11,12条数据
db.集合名.find().count() 统计行数
db.集合名.find( { $or: [{age:22},{age:25}] } ) 与查询 or
db.集合名.findOne() 查找第一条数据 (不常用)
cmd mongodb 可以使用JavaScript语句 , 如
for(let i = 0; i < 100; i++) {
db.集合名.insert( { “id”: i } )
}
db.集合名.update( { “name”: “juln” }, { “name”: “hhh” } ) 查找到name为juln的第一条数据,并用 {“name”: “hhh”} 完全替换该数据
db.集合名.update( { “name”: "juln }, { $set: {“age”:20} } ) 查找到name为juln的第一条数据,并修改age为20
db.集合名.update( { “sex”: “男” }, { $set:{“age”: 33} }, { multi: true } ) 更新所有匹配的数据
db.集合名.remove( {} ) 删除所有
db.集合名.remove( { “name”: “juln” } ) 删除name为juln的数据
db.集合名.remove( { “sex”: “男” }, { justOne: true } ) 删除sex为男的第一条数据
https://www.bilibili.com/video/BV16f4y1U7oT?p=21 21~24
推荐菜鸟教程 https://www.runoob.com/nodejs/nodejs-mongodb.html
npm i mongodb
要连接的数据库不存在时,自动创建数据库
const MongoClient = require('mongodb').MongoClient
const dbName = 'test'
const url = 'mongodb://127.0.0.1:27017/' + dbName // 默认为27017,具体是多少通过cmd mongo查看
MongoClient.connect(url, { useNewUrlParser: true }, (err, db) => { // { useNewUrlParser: true } 是官方推荐要加上的
if (err) throw err
console.log("数据库已创建!")
db.close()
})
或
const MongoClient = require('mongodb').MongoClient
const assert = require('assert')
const url = 'mongodb://127.0.0.1:27017'
const dbName = 'test'
const client = new MongoClient( url, { useNewUrlParser: true } )
client.connect( err => {
assert.equal(null,err)
console.log("数据库连接成功!")
const db = client.db(dbName)
const collection = db.collection('test') // 获取test集合
// 查询
collection.find({}).toArray( (err,data) => {
console.log(data)
client.close() // 关闭数据库连接
})
// 插入
collection.insertMany( [ {"name":"juln",age:20}, {"name":"zhuang",age:20} ], (err,result) => {
console.log("插入的数量为: " + result.insertedCount)
client.close()
})
collection.insertOne( { "name": "juln" }, (err,result) => {
console.log(result)
client.close()
})
// 更新
collection.updateOne( { "name": "juln" }, { $set: {age:20} }, (err,result) => {
console.log(result)
client.close()
})
// 删除
collection.deleteMany
collection.deleteOne( { "name": "juln" }, err => { // 找不到数据就不会删除,所以不会报错
if(err){
console.log('删除失败')
return
}
client.close()
})
})
这里的评论区有提到 http://www.imooc.com/wenda/detail/584619
所以 client.close() 就都不要写了,统统去掉,轻轻松松