欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > MongoDB Shell 基本命令(一)

MongoDB Shell 基本命令(一)

2024/10/23 19:38:13 来源:https://blog.csdn.net/xiaoren886/article/details/142991586  浏览:    关键词:MongoDB Shell 基本命令(一)

MongoDB Shell 基本命令(一)

1. 基本概念

SQL术语/概念MongoDB术语/概念解释/说明
databasedb数据库
tablecollection数据库表/集合
rowdocument数据记录行/文档
columnfield数据字段/域
indexindex索引
table joins表连接,MongoDB不支持
primary keyprimary key主键,MongoDB自动将_id字段设置为主键

2. 文档的基本数据结构

  • 文档的基本结构:{ : , : {}, … }

    • 封闭符 {}

    • 分隔符 ,

    • 连接符 :

    • 键的数据类型:UTF-8字符,可以用”“引起来,如”name“

      • 的用户命名规则:

        (1)‘_id’ 为保留字段key

        (2) 禁止使用’$'符号

        (3) 禁止使用’.'符号

        (4) 避免同一个{}中使用重复的

    • 值的数据类型:MongoDB支持的任意数据类型

    示例一:

    { "_id" : 1, "name" : "Zhang San" }
    

    示例二:

    { "_id" : ObjectId("5e746c62040a548ab32fff13"),  //ObjectId对象"name" : "Zhang San",  // 字符串"age" : 18,			   // 数字(Double)"alive" : true,        // 布尔值"hobbies" : ["Anime","Comic","Game", 19, false,[1,2,3],{a:1}],  // 数组"body": {"height" : 170,"weight" : 65},                             // Object 内嵌文档"courses" : [{ "coursename" : "nosql" },{ "coursename" : "mysql" },{ "coursename" : "python" },{ "coursename" : "linux" },{ "coursename" : "kettle" }]								   // 内嵌文档的数组
    }
    
  • MongoDB的基本数据类型

数据类型描述
String字符串。存储数据常用的数据类型。在 MongoDB 中,UTF-8 编码的字符串才是合法的。
Integer整型数值。用于存储数值。根据你所采用的服务器,可分为 32 位或 64 位。
Boolean布尔值。用于存储布尔值(真/假)。true/false = 1/0
Double双精度浮点值。用于存储浮点值。
Min/Max keys将一个值与 BSON(二进制的 JSON)元素的最低值和最高值相对比。
Arrays用于将数组或列表或多个值存储为一个键。[]
Timestamp时间戳。记录文档修改或添加的具体时间。Timestamp()
Object用于内嵌文档。{}
Null用于创建空值。
Symbol符号。该数据类型基本上等同于字符串类型,但不同的是,它一般用于采用特殊符号类型的语言。
Date日期时间。用 UNIX 时间格式来存储当前日期或时间。你可以指定自己的日期时间:创建 Date 对象,传入年月日信息。
Object ID对象 ID。用于创建文档的 ID。
Binary Data二进制数据。用于存储二进制数据。
Code代码类型。用于在文档中存储 JavaScript 代码。
Regular expression正则表达式类型。用于存储正则表达式。

3. 数据库(db)

// 查看当前服务器上的数据库
show dbs;
show databases;// 选择名为mydb的数据库(如果没有则隐式创建)
use mydb;// 查看当前使用的数据库
db;// 查看当前数据库的统计信息,由于没有插入相关信息,基本上为空值
db.stats();// 查看当前数据库的操作信息,返回当前正在执行的操作
db.currentOp();// 删除当前数据库
db.dropDatabase();

4. 集合(collection)

// 查看当前数据库中的集合
show collections;
show tables;// 创建一个名为mycoll的集合
db.createCollection("mycoll");// 重命名mycoll集合,新集合名叫mycollection
db.mycoll.renameCollection("mycollectioin")// 清空一个名为mycollection的集合 
db.mycollection.remove({});// 删除一个名为mycollection的集合 如果数据库没有任何集合时,数据库会被自动删除。
db.mycollection.drop();

4.1 添加文档到集合

insert() 方法

注意:db.collection中,collection为你要操作的集合的名称

db.collection.insert(<document or array of documents>,{multi: false}
)
insertOne() 方法

添加一条文档记录

db.collection.insertOne(<document>{}
)
insertMany() 方法

添加多条文档记录 ([]方括号表示数组)

db.collection.insertMany([ <document 1> {} , <document 2> {}, ... ]  --jsonArray
)

添加一条文档记录{“lastname”:“zhang”, “firstname”:“ren”}到集合mycollection

db.mycollection.insert({"lastname":"zhang", "firstname":"san"});
//返回id,比较好用,直接得到结果,进一步获取到ObjectID
db.mycollection.insertOne({"lastname":"zhang", "firstname":"san"});
var result = db.mycollection.insertOne({"lastname":"zhang", "firstname":"san"});
var newdoc_id = result.insertedId
//可以通过find()命令查找,如果不使用bson格式会报什么错误?
db.mycollection.find({_id:newdoc_id})//通过id找到对应信息

添加一个文档记录对象mydoc到集合mycollection, 使用insert或insertOne方法

var mydoc = {"lastname":"Zhang", "firstname":"San"};
db.mycollection.insert(mydoc);
// 3.2版后新的方法:insertOne
db.mycollection.insertOne(mydoc);

添加多条记录到集合mycollection,使用insert或insertMany方法

// 多条文档记录,用数组[]进行组合,用逗号分隔
db.mycollection.insert(
[{"lastname":"Zhang", "firstname":"san", "role":"teacher", "teacher_id":"2023409", "title":"教师", "courses":[{"coursename":"nosql"},{"coursename":"sqlserver"}]},{"lastname":"Zhang", "firstname":"San", "role":"student", "student_id":"2022000000", "grade":"2022", "class":"1", "score":80}
]
);

添加一个文档数组mydocs(多条文档的数组)到集合mycollection,使用insert或insertMany方法

// 多条文档记录用[]组合到一个数组mydocs中。
// 注意 coursename处于两个花括号中,属于两个内嵌的文档,不算重复的键
var mydocs = [{"lastname" : "Zhang","firstname" : "San","role" : "teacher","teacher_id" : "2023409","title" : "教师","courses" : [{ "coursename" : "nosql" },{ "coursename" : "mysql" },{ "coursename" : "python" },{ "coursename" : "linux" },{ "coursename" : "kettle" }]},{"lastname" : "Zhang","firstname" : "Yi","role" : "student","student_id" : "2022000001","grade" : "2022","class" : "1","score" : 80},{"lastname" : "Tan","firstname" : "Er","role" : "student","student_id" : "2022000002","grade" : "2022","class" : "1","score" : 70}
];
db.mycollection.insertMany(mydocs);
// 3.2版后新的方法:insertMany

4.2 查询文档记录

find() 方法
db.<collection>.find(<querydocument>, <projection>)
db.<collection>.findOne(<querydocument>, <projection>)select <projection> from <collection> where <querydocument>
select student_id from mycollection where score > 70;
db.mycollection.find({"score":{$gt:70}},{student_id:1});
// 查询集合mycollection中的文档
db.mycollection.find();// 将查询结果"漂亮化",只在终端有用
db.mycollection.find().pretty();// 查询集合mycollection中键为role, 值为student的文档记录
db.mycollection.find( {"role" : "student"} );// 将查询条件写入文档对象ceriteria查询
var criteria = { "role" : "student" };
db.mycollection.find(criteria);// 使用内嵌对象的字段值查询
db.mycollection.find({"courses.coursename":"mysql"})

汇总操作

//1.创建数据库
//use 使用数据库,如果这个数据库不存在就创建
use cqust
db = db.getSiblingDB("cqust")
//Note:刚才创建的数据库看不到,没有显示,因为只是创建了一个名字,在创建集合前没有文件生成
//2.查看数据库名
show databases;
//可以简写为:
show dbs;
//3.集合(collection)可以显示的创建,执行完该条语句,便创建了cqust数据库,以及集合
//也可以不显示创建
db.createCollection("collectionname");
//4.在集合中插入文档
//数据库操作命令: db.集合名.集合操作(参数...)
//构造文档JSON 重复字段自动过滤掉
//db.集合名.insert(文档对象)
//db.集合名.insert(文档列表对象)
//构造文档JSON 重复字段自动过滤掉
var doc={"姓名":"张三",性别:"男",学号:"2023409",课程:"分布式数据库原理",成绩:90,学号:"2023409"};
db.collectionname.insert(doc)

课堂练习:

1.创建学号+姓名(拼音)的数据库
2.创建data集合并查看该集合
3.在data集合中插入个人信息,包括:学号、姓名、性别、家庭地址、今天的所有课程等信息
4.通过find()查看刚才插入的信息,要求参数是insertedId
5.清空集合,删除集合,删除数据库

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com