MongoDB:常用命令

叁歲伎倆 2023-09-23 21:05 213阅读 0赞

本篇内容主要介绍:MongoDB 数据库命令、MongoDB 集合命令、MongoDB 文档命令、MongoDB 文档查询拓展


文章目录

    • 一、MongoDB 数据库命令
        • 1、启动 MongoDB
        • 2、连接 MongoDB
        • 3、获取帮助
        • 4、查询数据库
        • 5、创建数据库
        • 6、删除数据库
    • 二、MongoDB 集合命令
        • 1、获取帮助
        • 2、查看 MongoDB 集合命令
        • 3、创建 MongoDB 集合命令
        • 4、删除 MongoDB 集合命令
    • 三、MongoDB 文档命令
        • 1、插入 MongoDB 文档命令
        • 2、查询 MongoDB 文档命令
        • 3、更新 MongoDB 文档命令
        • 4、删除 MongoDB 文档命令
    • 四、MongoDB 文档查询拓展
        • 1、条件操作符
        • 2、limit 读取记录的条数
        • 3、skip 跳过的记录条数
        • 4、排序
        • 5、索引
        • 6、聚合

一、MongoDB 数据库命令

1、启动 MongoDB

# 启动 MongoDB 的 Shell 命令:

  1. # 默认方式启动MongoDB本地数据库
  2. mongod
  3. # 使用默认端口
  4. mongodb://localhost
  5. # 自定义数据库位置的启动本地数据库
  6. mongod --dbpath=<db_path>
  7. # 完整命令
  8. mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

2、连接 MongoDB

# 连接 MongoDB 的 Shell 命令:

  1. # 默认方式连接本地的27017端口的MongoDB
  2. mongo
  3. # 连接主机<host>的<port>端口的<db_name>数据库
  4. mongo <host>:<port>/<db_name>
  5. # 无连接启动mongo->获取指定主机和端口的连接->获取数据库
  6. mongo --nodb
  7. conn = new Mongo("<host>:<port>")
  8. db = conn.getDB("<db_name>")

3、获取帮助

# 获取帮助的 Shell 命令:

  1. # 获取数据库级别的帮助
  2. db.help()

4、查询数据库

# 查询数据库的 Shell 命令:

  1. # 查询数据库
  2. show dbs

5、创建数据库

# 创建数据库的 Shell 命令:

  1. # 如果数据库不存在,则创建并切换到该数据库,存在则切换到该数据库
  2. use <db_name>

6、删除数据库

# 删除数据库的 Shell 命令:

  1. # 先切换到指定数据库,然后执行以下命令
  2. db.dropDatabase()

二、MongoDB 集合命令

1、获取帮助

# 获取帮助的 Shell 命令:

  1. # 获取集合级别的帮助
  2. db.<collection_name>.help()

2、查看 MongoDB 集合命令

# 查看 MongoDB 集合 的 Shell 命令

  1. # 查看 MongoDB 集合
  2. show collections

3、创建 MongoDB 集合命令

# 创建 MongoDB 集合 的 Shell 命令

  1. # 创建 MongoDB 集合
  2. db.createCollection(name)
  3. # 创建 MongoDB 集合 Demo
  4. db.createCollection("lizhengi_test")
  5. # 创建 MongoDB 带参数的集合
  6. db.createCollection(name, options)
  7. # 创建 MongoDB 带参数的集合 Demo
  8. db.createCollection("lizhengi_test_2",{capped:true,size:1024,max:10000})

# 参数说明:

  • 参数:要创建的集合名称,可选参数,指定有关内存大小及索引的选项
  • 参数:

    • :如果为 true 则创建固定集合(有着固定大小的集合);
    • :为固定集合指定一个最大值,如果 capped 为 true 需要指定该字段;
    • :指定固定集合中包含文档的最大数量。

4、删除 MongoDB 集合命令

# 删除 MongoDB 集合 的 Shell 命令

  1. # 删除 MongoDB 集合
  2. db.<collection_name>.drop()

三、MongoDB 文档命令

1、插入 MongoDB 文档命令

# insert 命令

  1. # 基础的插入命令(不推荐)
  2. db.<collection_name>.insert(<document>)
  3. # 基础的插入命令(不推荐)Demo
  4. db.lizhengi_test.insert({
  5. name:"lizhengi",age:25,city:"BeiJing"})
  6. # 插入单条数据
  7. db.<collection_name>.insertOne(<document>)
  8. # 插入多条数据
  9. db.<collection_name>.insertMany(
  10. [ <document 1> , <document 2>, ... ]
  11. }

# insert 先定义后插入

  1. # 将数据定义为一个变量
  2. var <document_name> = <document>
  3. db.<collection_name>.insert(<document_name>)
  4. # 将数据定义为一个变量 Demo
  5. var cccc = {
  6. name:"lizhengi3",age:27,city:"BeiJing"}
  7. db.lizhengi_test.insertOne(cccc)

# save 命令

  1. # 基础的插入命令(不推荐)
  2. db.<collection_name>.save(<document>)
  • save():如果 _id 主键存在则更新数据,如果不存在就插入数据。该方法新版本中已废弃,可以使用 db.collection.insertOne()db.collection.replaceOne() 来代替。
  • insert():若插入的数据主键已经存在,则会抛 org.springframework.dao.DuplicateKeyException 异常,提示主键重复,不保存当前数据。

2、查询 MongoDB 文档命令

# 查询文档

  1. # 查询文档
  2. db.<document_name>.find(query, projection)
  • query:可选,使用查询操作符指定查询条件
  • projection:可选,使用投影操作符指定返回的键。查询时返回文档中所有键值,只需省略该参数即可(默认省略)。

3、更新 MongoDB 文档命令

使用 update()save() 方法来更新集合中的文档,其中 save 命令可以参照“插入 MongoDB 文档命令”部分。

# update 方法

  1. # 更新 MongoDB 文档命令
  2. db.<collection_name>.update(
  3. <query>,
  4. <update>,
  5. {
  6. upsert: <boolean>,
  7. multi: <boolean>,
  8. writeConcern: <document>
  9. }
  10. )

参数说明:

  • :update 的查询条件,类似 sql update 查询内 where 后面的。
  • :update 的对象和一些更新的操作符(如 , , ,inc…)等,也可以理解为sql update查询内set后面的
  • :可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
  • :可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
  • :可选,抛出异常的级别。

4、删除 MongoDB 文档命令

# 删除 MongoDB 文档命令

  1. # 删除 MongoDB 文档命令
  2. db.collection.remove(
  3. <query>,
  4. <justOne>
  5. )

参数说明:

  • :可选,删除的文档的条件。
  • :可选,如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。

四、MongoDB 文档查询拓展

1、条件操作符

# 大于(>): $gt

  1. # Demo
  2. db.collection1.find({
  3. age : {
  4. $gt : 30}})

# 大于等于(*=): $gte

  1. # Demo
  2. db.collection2.find({
  3. age : {
  4. $gte : 30}})

# 小于(<):$lt

  1. # Demo
  2. db.collection3.find({
  3. age : {
  4. $lt : 20}})

# 小于等于(<=):$lte

  1. # Demo
  2. db.collection4.find({
  3. age : {
  4. $lte : 20}})

# $lt 和 $gt

  1. # Demo
  2. db.collection5.find({
  3. age : {
  4. $gt : 30, $lt : 60,}})

2、limit 读取记录的条数

# limit 读取记录的条数

  1. # limit() 读取记录的条数
  2. db.<collection_name>.find().limit(NUMBER)

3、skip 跳过的记录条数

# skip 跳过的记录条数

  1. # skip()跳过的记录条数
  2. db.<collection_name>.find().limit(NUMBER).skip(NUMBER)
  3. # skip()跳过的记录条数 Demo 显示2条记录,跳过第一条记录
  4. db.lizhengi_test.find().limit(2).skip(1)

4、排序

# 升序排序

  1. # 升序排序
  2. db.<collection_name>.find().sort({
  3. <key_name>:1})

# 降序排序

  1. # 降序排序
  2. db.<collection_name>.find().sort({
  3. <key_name>:1})

5、索引

使用 createIndex() 方法创建索引

  1. 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.

6、聚合

聚合主要用来处理数据(平均值、求和等),并返回计算结果。

  1. 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 : { s u m : “ sum : “ sum:likes”}}}])
$avg 计算平均值 db.mycol.aggregate([{ KaTeX parse error: Expected ‘}’, got ‘EOF’ at end of input: …roup : {_id : “by_user”, num_tutorial : { a v g : “ avg : “ avg:likes”}}}])
$min 获取集合中所有文档对应值得最小值。 db.mycol.aggregate([{ KaTeX parse error: Expected ‘}’, got ‘EOF’ at end of input: …roup : {_id : “by_user”, num_tutorial : { m i n : “ min : “ min:likes”}}}])
$max 获取集合中所有文档对应值得最大值。 db.mycol.aggregate([{ KaTeX parse error: Expected ‘}’, got ‘EOF’ at end of input: …roup : {_id : “by_user”, num_tutorial : { m a x : “ max : “ max:likes”}}}])
$push 在结果文档中插入值到一个数组中。 db.mycol.aggregate([{ KaTeX parse error: Expected ‘}’, got ‘EOF’ at end of input: …roup : {_id : “by_user”, url : { p u s h : “ push: “ push:url”}}}])
$addToSet 在结果文档中插入值到一个数组中,但不创建副本。 db.mycol.aggregate([{ KaTeX parse error: Expected ‘}’, got ‘EOF’ at end of input: …roup : {_id : “by_user”, url : { a d d T o S e t : “ addToSet : “ addToSet:url”}}}])
$first 根据资源文档的排序获取第一个文档数据。 db.mycol.aggregate([{ KaTeX parse error: Expected ‘}’, got ‘EOF’ at end of input: …roup : {_id : “by_user”, first_url : { f i r s t : “ first : “ first:url”}}}])
$last 根据资源文档的排序获取最后一个文档数据 db.mycol.aggregate([{ KaTeX parse error: Expected ‘}’, got ‘EOF’ at end of input: …roup : {_id : “by_user”, last_url : { l a s t : “ last : “ last:url”}}}])

发表评论

表情:
评论列表 (有 0 条评论,213人围观)

还没有评论,来说两句吧...

相关阅读

    相关 MongoDB命令

    目录 1:基本常用命令 1.1:演示案例 1.2:数据库操作 1.2.1:选择和创建数据库,查看当前正在使用的数据库命令 1.2.2:数据库的删除 1.3:集合操作