MongoDB是一种非关系型数据库,它以文档的形式存储数据,提供了灵活和高性能的数据处理能力。MongoDB提供了多种工具和接口来操作数据库,其中最基本和最常用的就是mongo shell。mongo shell是一个交互式的JavaScript环境,可以让你直接在命令行中执行MongoDB的操作和查询。本文将介绍mongo shell的基本用法,包括如何连接数据库、执行CRUD操作、使用查询语句和投影、创建和删除集合和索引等。
连接数据库
要启动mongo shell,你需要在命令行中输入mongo命令,后面可以跟上一些参数,例如数据库的地址、端口、用户名、密码等。例如,如果你要连接到本地的test数据库,你可以输入:
如果你要连接到远程的数据库,你可以输入:
当然,你也可以先启动mongo shell,然后在shell中使用use命令切换到不同的数据库。例如:
执行CRUD操作
在mongo shell中,你可以使用db对象来表示当前连接的数据库,使用db.collection对象来表示当前操作的集合。集合是MongoDB中存储文档的容器,类似于关系型数据库中的表。你可以使用db.collection.insertOne()、db.collection.insertMany()、db.collection.updateOne()、db.collection.updateMany()、db.collection.replaceOne()、db.collection.deleteOne()、db.collection.deleteMany()等方法来执行CRUD(创建、读取、更新、删除)操作。例如:
插入一条文档到users集合中
插入多条文档到users集合中
更新一条文档,将name为Alice的文档的age增加1
更新多条文档,将所有年龄大于25的文档的email添加一个后缀
替换一条文档,将name为Bob的文档替换为一个新的文档
删除一条文档,将name为Charlie的文档删除
删除多条文档,将所有年龄小于30的文档删除
使用查询语句和投影
在mongo shell中,你可以使用db.collection.find()方法来查询集合中的文档。find方法接受两个参数:一个是查询条件,一个是投影。查询条件是一个JSON对象,用来指定筛选文档的条件。投影是一个JSON对象,用来指定返回文档的哪些字段。例如:
查询users集合中所有的文档
查询users集合中年龄大于等于30的文档
查询users集合中年龄大于等于30的文档,并只返回name和email字段
MongoDB支持多种查询操作符,例如$gt、$lt、$gte、$lte、$eq、$ne、$in、$nin、$and、$or、$not、$exists等,你可以使用这些操作符来构建复杂的查询条件。例如:
查询users集合中年龄在25到30之间,且email以.com结尾的文档
MongoDB也支持多种投影操作符,例如$elemMatch、$slice、$meta等,你可以使用这些操作符来控制返回文档的数组字段或者元数据字段。例如:
查询users集合中所有的文档,并只返回hobbies字段中的第一个元素
创建和删除集合和索引
在mongo shell中,你可以使用db.createCollection()方法来创建一个新的集合。你可以指定一些选项,例如集合的大小、索引、验证规则等。例如:
创建一个名为posts的集合,限制其大小为10MB,且每个文档必须包含title和content字段
你也可以使用db.collection.drop()方法来删除一个已有的集合。例如:
删除名为posts的集合
在mongo shell中,你可以使用db.collection.createIndex()方法来创建一个索引。索引是一种数据结构,可以提高查询的速度和效率。你可以指定一个或多个字段作为索引的键,以及索引的类型、方向、唯一性等属性。例如:
创建一个单字段升序索引,以name为键
创建一个复合索引,以name和age为键,分别为升序和降序
创建一个唯一索引,以email为键,保证每个文档的email都是唯一的
你也可以使用db.collection.dropIndex()方法来删除一个已有的索引。例如:
删除以name为键的索引