本篇内容主要介绍:MongoDB 数据库命令、MongoDB 集合命令、MongoDB 文档命令、MongoDB 文档查询拓展
# 启动 MongoDB 的 Shell 命令:
# 默认方式启动MongoDB本地数据库
mongod
# 使用默认端口
mongodb://localhost
# 自定义数据库位置的启动本地数据库
mongod --dbpath=
# 完整命令
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
# 连接 MongoDB 的 Shell 命令:
# 默认方式连接本地的27017端口的MongoDB
mongo
# 连接主机的端口的数据库
mongo :/# 无连接启动mongo->获取指定主机和端口的连接->获取数据库
mongo --nodb
conn = new Mongo(":")
db = conn.getDB("")
# 获取帮助的 Shell 命令:
# 获取数据库级别的帮助
db.help()
# 查询数据库的 Shell 命令:
# 查询数据库
show dbs
# 创建数据库的 Shell 命令:
# 如果数据库不存在,则创建并切换到该数据库,存在则切换到该数据库
use
# 删除数据库的 Shell 命令:
# 先切换到指定数据库,然后执行以下命令
db.dropDatabase()
# 获取帮助的 Shell 命令:
# 获取集合级别的帮助
db..help()
# 查看 MongoDB 集合 的 Shell 命令
# 查看 MongoDB 集合
show collections
# 创建 MongoDB 集合 的 Shell 命令
# 创建 MongoDB 集合
db.createCollection(name)
# 创建 MongoDB 集合 Demo
db.createCollection("lizhengi_test")# 创建 MongoDB 带参数的集合
db.createCollection(name, options)
# 创建 MongoDB 带参数的集合 Demo
db.createCollection("lizhengi_test_2",{capped:true,size:1024,max:10000})
# 参数说明:
# 删除 MongoDB 集合 的 Shell 命令
# 删除 MongoDB 集合
db..drop()
# insert 命令
# 基础的插入命令(不推荐)
db..insert()
# 基础的插入命令(不推荐)Demo
db.lizhengi_test.insert({name:"lizhengi",age:25,city:"BeiJing"})# 插入单条数据
db..insertOne()
# 插入多条数据
db..insertMany([ , , ... ]
}
# insert 先定义后插入
# 将数据定义为一个变量
var =
db..insert()
# 将数据定义为一个变量 Demo
var cccc = {name:"lizhengi3",age:27,city:"BeiJing"}
db.lizhengi_test.insertOne(cccc)
# save 命令
# 基础的插入命令(不推荐)
db..save()
db.collection.insertOne() 或 db.collection.replaceOne() 来代替。# 查询文档
# 查询文档
db..find(query, projection)
使用 update() 和 save() 方法来更新集合中的文档,其中 save 命令可以参照“插入 MongoDB 文档命令”部分。
# update 方法
# 更新 MongoDB 文档命令
db..update(,,{upsert: ,multi: ,writeConcern: }
)
参数说明:
# 删除 MongoDB 文档命令
# 删除 MongoDB 文档命令
db.collection.remove(,
)
参数说明:
# 大于(>): $gt
# Demo
db.collection1.find({age : {$gt : 30}})
# 大于等于(*=): $gte
# Demo
db.collection2.find({age : {$gte : 30}})
# 小于(<):$lt
# Demo
db.collection3.find({age : {$lt : 20}})
# 小于等于(<=):$lte
# Demo
db.collection4.find({age : {$lte : 20}})
# $lt 和 $gt
# Demo
db.collection5.find({age : {$gt : 30, $lt : 60,}})
# limit 读取记录的条数
# limit() 读取记录的条数
db..find().limit(NUMBER)
# skip 跳过的记录条数
# skip()跳过的记录条数
db..find().limit(NUMBER).skip(NUMBER)
# skip()跳过的记录条数 Demo 显示2条记录,跳过第一条记录
db.lizhengi_test.find().limit(2).skip(1)
# 升序排序
# 升序排序
db..find().sort({:1})
# 降序排序
# 降序排序
db..find().sort({:1})
使用 createIndex() 方法创建索引
db.collection.createIndex(keys, options)
语法中 key 值为你要创建的索引字段,1 为指定按升序创建索引,如果你想按降序来创建索引指定为 -1 即可。
createIndex() 接收可选参数,可选参数列表如下:
| Parameter | Type | Description |
|---|---|---|
| background | Boolean | 建索引过程会阻塞其它数据库操作,background可指定以后台方式创建索引,即增加 “background” 可选参数。 “background” 默认值为 false。 |
| unique | Boolean | 建立的索引是否唯一。指定为true创建唯一索引。默认值为 false. |
| name | string | 索引的名称。如果未指定,MongoDB的通过连接索引的字段名和排序顺序生成一个索引名称。 |
| dropDups | Boolean | 3.0+版本已废弃。在建立唯一索引时是否删除重复记录,指定 true 创建唯一索引。默认值为 false. |
| sparse | Boolean | 对文档中不存在的字段数据不启用索引;这个参数需要特别注意,如果设置为true的话,在索引字段中不会查询出不包含对应字段的文档.。默认值为 false。 |
| expireAfterSeconds | integer | 指定一个以秒为单位的数值,完成 TTL设定,设定集合的生存时间。 |
| v | index version | 索引的版本号。默认的索引版本取决于mongod创建索引时运行的版本。 |
| weights | document | 索引权重值,数值在 1 到 99,999 之间,表示该索引相对于其他索引字段的得分权重。 |
| default_language | string | 对于文本索引,该参数决定了停用词及词干和词器的规则的列表。 默认为英语 |
| language_override | string | 对于文本索引,该参数指定了包含在文档中的字段名,语言覆盖默认的language,默认值为 language. |
聚合主要用来处理数据(平均值、求和等),并返回计算结果。
db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
| 表达式 | 描述 | 实例 |
|---|---|---|
| $sum | 计算总和。 | db.mycol.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: …roup : {_id : "by_user", num_tutorial : {sum:"sum : "sum:"likes"}}}]) |
| $avg | 计算平均值 | db.mycol.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: …roup : {_id : "by_user", num_tutorial : {avg:"avg : "avg:"likes"}}}]) |
| $min | 获取集合中所有文档对应值得最小值。 | db.mycol.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: …roup : {_id : "by_user", num_tutorial : {min:"min : "min:"likes"}}}]) |
| $max | 获取集合中所有文档对应值得最大值。 | db.mycol.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: …roup : {_id : "by_user", num_tutorial : {max:"max : "max:"likes"}}}]) |
| $push | 在结果文档中插入值到一个数组中。 | db.mycol.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: …roup : {_id : "by_user", url : {push:"push: "push:"url"}}}]) |
| $addToSet | 在结果文档中插入值到一个数组中,但不创建副本。 | db.mycol.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: …roup : {_id : "by_user", url : {addToSet:"addToSet : "addToSet:"url"}}}]) |
| $first | 根据资源文档的排序获取第一个文档数据。 | db.mycol.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: …roup : {_id : "by_user", first_url : {first:"first : "first:"url"}}}]) |
| $last | 根据资源文档的排序获取最后一个文档数据 | db.mycol.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: …roup : {_id : "by_user", last_url : {last:"last : "last:"url"}}}]) |