MongoDB基本命令

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: MongoDB基本命令

一 MongoDB简介

MongoDB是一个文档型数据库,数据以类似JSON的文档形式存储。

MongoDB的设计理念是为了应对大数据量、高性能和灵活性需求。

MongoDB使用集合(Collections)来组织文档(Documents),每个文档都是由键值对组成的。

  • 数据库(Database):存储数据的容器,类似于关系型数据库中的数据库
  • 集合(Collection):数据库中的一个集合,类似于关系型数据库中的表
  • 文档(Document):集合中的一个数据记录,类似于关系型数据库中的行(row),以BSON格式存储。

MongoDB将数据存储为一个文档,数据结构由键值对组成,文档类似于JSON对象,字段值可以包含其他文档,数组及文档数组。

mysql与MongoDB对比

二 MongoDB操作

1 登录和退出

登录客户端:mongo

退出:exit

2 数据库操作

(1)查看所有数据库

# 方法一
show databases
# 方法二
show dbs

(2)选择数据库

1、选择数据库

use 数据库名

如果数据库不存在,则创建数据库,否则切换到指定数据库。

2、显示当前使用的数据库

db

(3)删除数据库

先选择数据库,再删除

db.dropDatabase()

3 集合操作

(1)创建集合

db.createCollection(集合名)

(2)查看所有集合

查看当前数据库的所有集合

show collections

(3)删除集合

db.集合名.drop()

4 文档操作

(1)新增文档

# 插入一条
db.集合名.insert({key:value})
# 插入多条
db.集合名.insert([{key1:value1}, {key2:value2}])
# 插入一条
db.集合名.insertOne({key:value})
# 插入多条   要是只插入一条会报错
db.集合名.insertMany()

例:

> db.myCollection.insert({name:"zhangsan",age:11})
WriteResult({ "nInserted" : 1 })
> db.myCollection.insert([{name:"wangwu",age:22},{name:"zhaoliu",age:22}])
BulkWriteResult({
        "writeErrors" : [ ],
        "writeConcernErrors" : [ ],
        "nInserted" : 2,
        "nUpserted" : 0,
        "nMatched" : 0,
        "nModified" : 0,
        "nRemoved" : 0,
        "upserted" : [ ]
})
> db.myCollection.insertOne({name:"z"})
{
        "acknowledged" : true,
        "insertedId" : ObjectId("6645e331a0ca0d60dfb09af7")
}
> db.myCollection.find({})
{ "_id" : ObjectId("6645b896a0ca0d60dfb09af2"), "name" : "zhangsan", "age" : 11 }
{ "_id" : ObjectId("6645dd92a0ca0d60dfb09af3"), "name" : "lisi", "age" : 12 }
{ "_id" : ObjectId("6645e11fa0ca0d60dfb09af4"), "name" : "wangwu", "age" : 13 }
{ "_id" : ObjectId("6645e14da0ca0d60dfb09af5"), "name" : "wangwu", "age" : 22 }
{ "_id" : ObjectId("6645e14da0ca0d60dfb09af6"), "name" : "zhaoliu", "age" : 22 }
{ "_id" : ObjectId("6645e331a0ca0d60dfb09af7"), "name" : "z" }
{ "_id" : ObjectId("6645e3b0a0ca0d60dfb09af8"), "name" : "a", "age" : 1 }
{ "_id" : ObjectId("6645e3b0a0ca0d60dfb09af9"), "name" : "b" }
> db.myCollection.insertMany({name:"b"})
uncaught exception: TypeError: documents.map is not a function :
DBCollection.prototype.insertMany@src/mongo/shell/crud_api.js:307:17
@(shell):1:1

例:

# 查询a是10的文档
{a:10}
# 查询a是10,b是hello的文档
{a:10, b:"hello"}
# 查询a>10
{a : {$gt : 10}}
# 查询a为10或hello
{a: {$in : [10, "hello"]}}
# a是一个数组,同时包含[10, "hello"]
{a : {$all : [10, "hello"]}}
# a是一个数组,包含元素{b:1, c:2}
{a : {$elemMatch : {b:1, c:2}}}
# a以m开头
{a : /^m/}
{a : {$regex : "^m"}}
# a%10 = 1
{a : {$mod : [10,1]}}

(2)查询文档

# 查询所有
db.集合名.find()
# 按条件查询
db.集合名.find({key:value})
# 按条件查询第一个
db.集合名.findOne({key:value})
# 按条件查询第一个,方式二
db.集合名.find({key:value})[0]
# 查询所有结果的数量
db.stus.find({}).length()
# 方式二
db.stus.find({}).count()

例:

> db.myCollection.find()
{ "_id" : ObjectId("6645b896a0ca0d60dfb09af2"), "name" : "zhangsan", "age" : 11 }
{ "_id" : ObjectId("6645dd92a0ca0d60dfb09af3"), "name" : "lisi", "age" : 12 }
> db.myCollection.find({})
{ "_id" : ObjectId("6645b896a0ca0d60dfb09af2"), "name" : "zhangsan", "age" : 11 }
{ "_id" : ObjectId("6645dd92a0ca0d60dfb09af3"), "name" : "lisi", "age" : 12 }
> db.myCollection.find({name:"lisi"})
{ "_id" : ObjectId("6645dd92a0ca0d60dfb09af3"), "name" : "lisi", "age" : 12 }
> db.myCollection.findOne({name:"lisi"})
{
        "_id" : ObjectId("6645dd92a0ca0d60dfb09af3"),
        "name" : "lisi",
        "age" : 12
}
> db.myCollection.find({name:"lisi"})[0]
{
        "_id" : ObjectId("6645dd92a0ca0d60dfb09af3"),
        "name" : "lisi",
        "age" : 12
}
> db.myCollection.find({}).length()
2

(3)更新文档

# 更新一个
db.collection.update()
# 同时修改多个符合条件的文档
db.collection.updateMany()
# 修改一个符合条件的文档
db.collection.updateOne()
# 替换一个符合条件的文档
db.collection.replaceOne()

首先需要注意的是,在使用update()时,需要一个新的玩意加入,叫做修改操作符,一般长成:

$set    表示需要设置指定的属性
  $unset    表示需要删除指定的属性
  $push   表示给数组添加一个新元素,因为文档内也会有数组,数组便会有数组元素
  $addToset   表示给数组添加一个新元素,和push的区别是,如果出现同名的数组元素,则不会再添加
  $gt     大于
  $gte    大于等于
  $lt     小于
  $lte    小于等于
  $or [{条件一,条件二}]   表示或的意思,符合条件一或者条件二 
  $inc    表示自增,用在在原来数据的基础上对数据加减,可用于加薪减薪的操作

(4)删除文档

# 删除所有
db.集合名.remove()
# 按条件删除 所有
db.集合名.remove({key:value})
# 按条件删除 一条
db.集合名.remove({key:value}, true)
# 删除一条
db.collection.deleteOne()
# 删除多条
db.collection.deleteMany()
# 删除集合(如果最后一个集合没了,数据库也没了。。。)
db.collection.drop()

例:

> db.myCollection.remove({name:"wangwu"})
WriteResult({ "nRemoved" : 2 })

三 实例

SQL与MongoDB语句对比

-- 创建表
CREATE TABLE users (name VARCHAR(128), age NUMBER)
db.createCollection("users")
-- 插入
INSERT INTO users VALUES('BOb', 32)
db.users.insert({name:"Bob", age:32})
-- 查询所有字段
SELECT * FROM users
db.users.find()
-- 查询需要的字段
SELECT name, age FROM users
db.users.find({}, {name:1, age:1, _id:0})
-- 查询age=33的用户
SELECT name, age FROM users WHERE age=33
db.users.find({age:33}, {name:1, age:1, _id:0})
-- 查询age>33的用户
SELECT * FROM users WHERE age>33
db.users.find({age, {$gt: 33}})
-- 查询age<=33的用户
SELECT * FROM users WHERE age<=33
db.users.find({age : {$gt:33}}) 
-- 查询age>33且age<40的用户
SELECT * FROM users WHERE age>33 AND age<40
db.users.find({age:{$gt:33, $lt<40}})
-- 查询age=32且name='Bob'的用户
SELECT * FROM users WHERE age=32 AND name='Bob'
db.users.find({age:32, name:"Bob"})
-- 查询age=33 or name='Bob'的用户
SELECT * FROM users WHERE age=32 OR name='Bob'
db.users.find({$or;[{age:33}, {name:"Bob"}]})
-- 查询age=33的用户,且正序
SELECT * FROM users WHERE age=33 ORDER BY name ASC
db.users.find({age:33}).sort({name:1})
-- 倒序
SELECT * FROM users ORDER BY name DESC
db.users.find().sort({name:-1})
-- 模糊查询
SELECT * FROM users WHERE name LIKE '%Joe%'
dn.users.find({name: /Joe/})
-- 以什么开头
SELECT * FROM users WHERE name LIKE 'Joe%'
db.users.find({name: /^Joe/})
-- limit
SELECT * FROM users LIMIT 10 SKIP 20
db.users.find().skip(20).limit(10)
-- LIMIT 1
SELECT * FROM users LIMIT 1
db.users.findOne()
-- 去重
SELECT DISTINCT name FROM users
db.users.distinct("name")
-- count
SELECT COUNT(*) FROM users
db.users.count()
-- 
SELECT COUNT(*) FROM users WHERE age>30
db.users.find({age:{$gt:30}}).count()

参考

https://blog.csdn.net/lyyrhf/article/details/115469161

https://blog.csdn.net/weixin_45715650/article/details/120155319

目录
相关文章
|
6月前
|
NoSQL MongoDB 微服务
微服务——MongoDB常用命令——文档的分页查询
本文介绍了文档分页查询的相关内容,包括统计查询、分页列表查询和排序查询。统计查询使用 `count()` 方法获取记录总数或按条件统计;分页查询通过 `limit()` 和 `skip()` 方法实现,控制返回和跳过的数据量;排序查询利用 `sort()` 方法,按指定字段升序(1)或降序(-1)排列。同时提示,`skip()`、`limit()` 和 `sort()` 的执行顺序与编写顺序无关,优先级为 `sort()` &gt; `skip()` &gt; `limit()`。
249 1
|
6月前
|
JSON NoSQL MongoDB
微服务——MongoDB常用命令——文档基本CRUD
本文介绍了MongoDB中文档的基本操作,包括插入、查询、更新和删除。单个文档插入使用`insert()`或`save()`方法,批量插入用`insertMany()`。查询所有文档用`find()`,条件查询可在`find()`中添加参数,投影查询控制返回字段。更新文档通过`update()`实现,支持覆盖修改、局部修改(使用`$set`)和批量修改。列值增长可用`$inc`实现。删除文档用`remove()`,需谨慎操作以免误删数据。此外,文档键值对有序,区分大小写,不能有重复键。
130 1
|
6月前
|
存储 NoSQL MongoDB
微服务——MongoDB常用命令——MongoDB索引知识概述
本文介绍MongoDB索引相关知识,包括其在查询中的重要作用。索引可避免全集合扫描,显著提升查询效率,尤其在处理海量数据时。通过B树数据结构存储字段值并排序,支持相等匹配、范围查询及排序操作。文中还提供了官方文档链接以供深入学习。
96 0
|
6月前
|
存储 NoSQL MongoDB
微服务——MongoDB常用命令——MongoDB索引的类型
本节介绍了MongoDB中索引的几种类型及其特点。包括单字段索引,支持升序/降序排序,索引顺序对操作无影响;复合索引,字段顺序重要,可实现多级排序;地理空间索引,支持平面与球面几何查询;文本索引,用于字符串搜索并存储词根;哈希索引,基于字段值散列,适合等值匹配但不支持范围查询。
177 1
微服务——MongoDB常用命令——MongoDB索引的类型
|
6月前
|
存储 JSON NoSQL
MongoDB常用命令
本文介绍了将文章评论数据存储到MongoDB中的操作方法,包括数据库和集合的基本操作。主要内容涵盖:选择与创建数据库(如`articledb`)、数据库删除、集合的显式与隐式创建及删除、文档的CRUD操作(插入、查询、更新、删除)。此外,还详细说明了分页查询、排序查询以及统计查询的方法,例如使用`limit()`、`skip()`实现分页,`sort()`进行排序,`count()`统计记录数。通过实例展示了如何高效管理MongoDB中的数据。
|
6月前
|
NoSQL 关系型数据库 MongoDB
微服务——MongoDB常用命令——集合操作
本节主要介绍MongoDB中的集合操作,包括显式与隐式创建集合的方法。显式创建使用`db.createCollection(name)`,需遵循命名规范(如不能以&quot;system.&quot;开头或包含`\0`字符)。隐式创建则通过直接向不存在的集合插入文档实现,更为常用。此外,还介绍了集合删除方法`db.collection.drop()`及其返回值规则,帮助用户管理数据库中的集合资源。
234 0
|
6月前
|
存储 NoSQL MongoDB
微服务——MongoDB常用命令1——数据库操作
本节介绍了 MongoDB 中数据库的选择、创建与删除操作。使用 `use 数据库名称` 可选择或创建数据库,若数据库不存在则自动创建。通过 `show dbs` 或 `show databases` 查看所有可访问的数据库,用 `db` 命令查看当前数据库。注意,集合仅在插入数据后才会真正创建。数据库命名需遵循 UTF-8 格式,避免特殊字符,长度不超过 64 字节,且部分名称如 `admin`、`local` 和 `config` 为系统保留。删除数据库可通过 `db.dropDatabase()` 实现,主要用于移除已持久化的数据库。
427 0
|
10月前
|
存储 JSON NoSQL
MongoDB常用命令
MongoDB常用命令
97 1
MongoDB常用命令
|
11月前
|
NoSQL MongoDB 数据库
MongoDB是一个NoSQL数据库,有着多种不同的命令和操作。以下是一些常见的MongoDB命令:
一些常用的MongoDB命令,如数据库和集合的管理、数据的插入、查询、更新、删除以及聚合操作等。
133 1
|
SQL NoSQL 安全
MongoDB命令汇总
这篇文章提供了一个MongoDB命令的汇总,包括数据库操作、DDL和DML命令、安全管理、数据备份恢复、远程连接管理和聚合操作等。
487 2

推荐镜像

更多