MongoDB v4.0 命令

官方文档 > 点这里 <

操作系统库

#操作管理员库
use admin
#鉴权
db.auth("root","admin");
#用户查看(格式美化)
db.system.users.find().pretty(); #新增用户
db.createUser({
user: 'root1',
pwd: 'admin1',
roles: [ { role: "dbOwner", db: "yapi" }]
}); #更新用户信息/密码/权限
db.updateUser("root1",{
pwd: "admin2",
roles:
[{
role: "root",
db: "admin"
},{
role: "userAdminAnyDatabase",
db: "admin"
},{
role: "readWriteAnyDatabase",
db: "admin"
},{
role: "dbAdminAnyDatabase",
db: "admin"
}]}) #删除数据库所属用户
db.dropUser("root1");

操作自定义库

#操作自定义库
use persionalDB #鉴权
db.auth("user","pwd"); #创建数据库所属用户
db.createUser({
user: 'username1',
pwd: 'password1',
roles: [ { role: "dbOwner", db: "yapi" }]
}); #更新用户信息/密码/权限
db.updateUser("username1",{
pwd: "NEW pass",
roles:
[{
role: "root",
db: "admin"
},{
role: "userAdminAnyDatabase",
db: "admin"
},{
role: "readWriteAnyDatabase",
db: "admin"
},{
role: "dbAdminAnyDatabase",
db: "admin"
}]}); #删除数据库所属用户
db.dropUser("username1");

1.0.0 基础操作 [collection]= 所查集合名

use [db_name];

db.[collection].insert({[title]:'[value]'});
eg:
db.hellocollction.insert({name:'hello'}); # 单个插入
db.inventory.insertOne(
{ item: "canvas",
qty: 100,
tags: ["cotton"],
size: {
h: 28,
w: 35.5,
uom: "cm"
}
}
)
# 批量插入
db.inventory.insertMany([
{ item: "journal", qty: 25, tags: ["blank", "red"], size: { h: 14, w: 21, uom: "cm" } },
{ item: "mat", qty: 85, tags: ["gray"], size: { h: 27.9, w: 35.5, uom: "cm" } },
{ item: "mousepad", qty: 25, tags: ["gel", "blue"], size: { h: 19, w: 22.85, uom: "cm" } }
])

1.1 >增<

MongoDB v4.0 命令-LMLPHP

1.2 >查<

MongoDB v4.0 命令-LMLPHP

1.3 >改<

MongoDB v4.0 命令-LMLPHP

1.4 >删<

MongoDB v4.0 命令-LMLPHP

2.0 高级: 联表查询 Join

初始数据

db.product.insert({"_id":1,"productname":"商品1","price":15});
db.product.insert({"_id":2,"productname":"商品2","price":36}); db.order.insert({"_id":1,"pid":1,"ordername":"订单1","uid":1});
db.order.insert({"_id":2,"pid":2,"ordername":"订单2","uid":2});
db.order.insert({"_id":3,"pid":2,"ordername":"订单3","uid":2});
db.order.insert({"_id":4,"pid":1,"ordername":"订单4","uid":1}); db.user.insert({"_id":1,"username":1});
db.user.insert({"_id":2,"username":2}); db.product.find();
db.order.find();
db.user.find();
db.product.aggregate([
{
$lookup:
{
from: "order",
localField: "_id",
foreignField: "pid",
as: "inventory_docs"
}
}
]);
#结果:
{
"_id" : 1.0,
"productname" : "商品1",
"price" : 15.0,
"inventory_docs" : [
{
"_id" : 1.0,
"pid" : 1.0,
"ordername" : "订单1"
},
{
"_id" : 4.0,
"pid" : 1.0,
"ordername" : "订单4"
}
]
}

lookup 就是使用 aggregate 的 $lookup 属性,$lookup 操作需要一个四个参数的对象:

  • localField:在输入文档中的查找字段
  • from:需要连接的集合
  • foreignField:需要在from集合中查找的字段
  • as:输出的字段名字
db.order.aggregate([
{
"lookup": {
"from": "product",
"localField": "pid",
"foreignField": "_id",
"as": "inventory_docs"
}
},{
"lookup": {
"from": "user",
"localField": "uid",
"foreignField": "_id",
"as": "user_docs"
}
}
]);

除了 $lookup,populate 也可以用来进行关联查询

05-11 15:14