进入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
# 创建数据库的语法
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 数据库中。
video> db.video.findOne()
{
_id: ObjectId("64118a9fe6ff2de917ead900"),
title: 'start War:Episode IV',
director: 'George Lucas',
year: 1977
}
使用 find 时,shell 将自动显示最多 20 个匹配的文档,但也可以获取更多文档。
如果想修改文档,可以使用 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' ]
}
]
deleteOne : 删除与过滤条件匹配的一个文档。
deletemany:删除与过滤条件匹配的所有文档。
video> db.video.deleteOne({title:"start War:Episode IV"});
{ acknowledged: true, deletedCount: 1 }
video> db.video.find();
video>
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权威指南