【mongodb基础-4】shell相关语法与运行javaScript程序

一. 运行shell

进入mongodb shell

lianggao@LiangdeMacBook-Pro ~ % mongosh                                 
Current Mongosh Log ID:        64118186e6ff2de917ead8ff
Connecting to:                mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.8.0
Using MongoDB:                6.0.5
Using Mongosh:                1.8.0

For mongosh info see: https://docs.mongodb.com/mongodb-shell/

test> show databases;
admin   40.00 KiB
config  84.00 KiB
local   40.00 KiB

启动时,shell 会连接到 MongoDB 服务器端的 test 数据库,并将此数据库连接赋值给全局变量 db

# 查看db当前指向那个数据库
test> db
test

语法糖

shell 包含了一些不是有效 JavaScript 的扩展语法。

# 查看变量
test> db
test
test> show databases;
admin   40.00 KiB
config  72.00 KiB
local   40.00 KiB

# 切换当前数据库
test> use admin;
switched to db admin
admin> db
admin

二. shell中的基本操作

  1. 创建数据库并插入文档

# 创建数据库的语法
use DATABASE_NAME

现在我们来看一个基础的操作:创建一个数据库、集合并将数据插入到集合中

先创建一个集合

admin> movie={"title":"start War:Episode IV",
... "director":"George Lucas",
... "year":1977}
{ title: 'start War:Episode IV', director: 'George Lucas', year: 1977 }

创建一个数据库

# 此时输入use dbs; 并不会展示刚创建的数据库,还需要插入一条数据
admin> use video;
switched to db video

插入数据

插入刚才的数据,此时插入video库的video集合(应该会默认创建一个集合)

video> db.video.insertOne(movie)
{
  acknowledged: true,
  insertedId: ObjectId("64118a9fe6ff2de917ead900")
}

查看数据库

video> show dbs;
admin    40.00 KiB
config  108.00 KiB
local    40.00 KiB
video     8.00 KiB

注意:

MongoDB 中默认的数据库为 test,如果你没有创建新的数据库,集合将存放在 test 数据库中。

  1. 查找文档

video> db.video.findOne()
{
  _id: ObjectId("64118a9fe6ff2de917ead900"),
  title: 'start War:Episode IV',
  director: 'George Lucas',
  year: 1977
}

使用 find 时,shell 将自动显示最多 20 个匹配的文档,但也可以获取更多文档。

  1. 更新文档

如果想修改文档,可以使用 updateOne。updateOne 会接受(至少)两个参数:

1. 查询条件:用于匹配要更新哪些文档
2. 更新内容:描述更新文档的内容
video> db.video.updateOne({title:"start War:Episode IV"},
... {$set:{reviews:["good","best"]}})
{
  acknowledged: true,
  insertedId: null,
  matchedCount: 1,
  modifiedCount: 1,
  upsertedCount: 0
}
video> db.video.find().pretty()
[
  {
    _id: ObjectId("64118a9fe6ff2de917ead900"),
    title: 'start War:Episode IV',
    director: 'George Lucas',
    year: 1977,
    reviews: [ 'good', 'best' ]
  }
]

  1. 删除

deleteOne : 删除与过滤条件匹配的一个文档。
deletemany:删除与过滤条件匹配的所有文档。
video> db.video.deleteOne({title:"start War:Episode IV"});
{ acknowledged: true, deletedCount: 1 }
video> db.video.find();

video> 

三. 运行JavaScript函数与程序

shell 是一个功能齐全的 JavaScript 解释器,能够运行任意的JavaScript 程序。

test> x = 200;
200
test> x / 5;
40

可以利用所有的 JavaScript 标准库、定义和调用javascript函数:

test> Math.sin(Math.PI/2);
1

test> new Date("2023/03/15")
ISODate("2023-03-14T16:00:00.000Z")


test> "Hello,world!".replace("world","mongoDB");
Hello,mongoDB!


test> function fun(n){
... if(n<=1) return 1;
... return n*fun(n-1);
... }
[Function: fun]
test> fun(5)
120

注意:你可以创建多行命令。当按下回车键时,shell 将检测 JavaScript 语句是否完整。如果语句不完整,那么 shell 将允许你在下一行继续进行编写。

参考:

mongodb权威指南

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

roman_日积跬步-终至千里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值