前言:
Mongodb,基于分布式文档存储的数据库,由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSQL数据库中比较热门的一种。它在许多场景下可用于替代传统的关系型数据库或键/值存储方式。
use admin 切换到admin数据库
//创建用户
db.createUser({
user:"admin",
pwd:"admin",
roles:[
{
role:"root",
db:"admin"
}
],
mechanisms:[
"SCRAM-SHA-1"
]
})
use admin 切换到admin
db.auth("admin","admin") //身份认证
show dbs; //查看所有数据库
db.dropDatebase() //删除数据库
//切换到xiaoniu数据库
use xiaoniu
//创建用户
db.createUser({
user:"xiaoniu",
pwd:"123468",
roles:["readWrite"],
mechanisms:[
"SCRAM-SHA-1"
]
})
//查看本数据库下的所有用户
show users
use xiaoniu //使用xiaoniu数据库
db.auth("xiaoniu","123468") //认证(不需要也行)
db.createCollection("bike") //创建bike表
//创建固定集合(表)person,大小12800KB,文档(行数)最大个数为1000个
db.createCollection("person",{
capped:true,
autoIndexId:true,
size:12800,
max:1000
})
db.bike.drop() //删除bike表
show tables\collections //显示所有表
db.bike.insert({"bikebo":10010,"status":0}) //新增一条数据(biek集合若不存在,则自动创建)
db.bike.find() //查找所有数据
db.bike.deleteOne({"status":0,"bikeno":10010}) //删除一条数据
//向col集合中插入一条数据
db.col.insert({
title: "MongoDB 教程",
description: "MongoDB 是一个NOSQL数据库",
by: "菜鸟教程",
url: "http://www.runoob.com",
tags: ['mongodb','database','NoSQL'],
likes: 100
})
//一次插入多条数据
var res = db.col.insertMany([{"d":300},{"e":400}])
//执行变量内容
res
执行显示结果:
{
"acknowledged" : true,
"insertedIds" : [
ObjectId("5c4b10d451fa73bcaec25103"),
ObjectId("5c4b10d451fa73bcaec25104")
]
}
################## update()方法 ###############
第一行确定更新条件query,
第二行更新内容update,
第三行更新参数{upset:<boolean>,multi:<boolean>,writeConcern:<document>}
upset:可选,为true则不存在更新条件的记录时自动插入,默认为false,不插入
multi:可选,为true则更新(或插入)所有匹配的记录,默认为false,更新第一条
writeConcern:可选,抛出异常的级别
db.col.update(
{"title":"MongoDB 教程"},
{$set:{'title':'MongoDB'}},
{multi:true,}
)
执行显示结果:WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })
################### 定义变量 #######################
//定义变量
var document=({
title: "MongoDB 教程",
description: "MongoDB 是一个NOSQL数据库",
by: "菜鸟教程",
url: "http://www.runoob.com",
tags: ['mongodb','database','NoSQL'],
likes: 100
});
db.col.inert(document)
db.col.save(document) //若指定_id字段,则修改; 不指定,则插入,如下
################## save()方法 ######################
//修改_id为ObjectId("5c4b0f8d51fa73bcaec25102"),的likes字段,改为200
db.col.save({
_id: ObjectId("5c4b0f8d51fa73bcaec25102"),
title: "MongoDB 教程",
description: "MongoDB 是一个NOSQL数据库",
by: "菜鸟教程",
url: "http://www.runoob.com",
tags: ['mongodb','database','NoSQL'],
likes: 200
})
执行显示结果:WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
################# remove()删除 ###################
第一行,删除条件
第二行,指定删除条数,设为true或1,则只删除一条;默认删除匹配的全部记录
db.col.remove(
{"likes" : 100},
{justOne: 1}
)
执行显示结果:WriteResult({ "nRemoved" : 1 })
db.col.remove(
{"e" : 400}
)
执行显示结果:WriteResult({ "nRemoved" : 3 })
db.col.remove({}) //清空表
################## db.find(query, projection) ###############
query条件(可选)、projection返回键值(可选)
db.col.find({"title" : "MongoDB"})
db.col.find({"likes" : 400}).pretty() //以格式化的方式来显示所有数据
/**
* 操作符 > -$gt < -$lt >= -$gt=gte <= -$lte
*/
for example:
查询’likes‘大于200的数据
db.col.find({likes: {$gt: 200}})
查询大于100,小于300的数据
db.col.find({likes: {$lt: 300,$gt: 100}}).pretty()
################### MongoDB OR 条件 ######################
查询'by'为'菜鸟教程' 或 'likes'为'100'的数据
db.col.find({$or:[{"by": "菜鸟教程"},{"likes": "100"}]})
################### MongoDB AND 和 OR 联合使用 #############
查询where likes>=200 AND (by='菜鸟教程' OR title='MongoDB 教程')
db.col.find(
{'likes': {$gte: 200},
$or: [{'by': '菜鸟教程'},{'title': 'MongoDB 教程'}]
})
.pretty()