2024-01-05
mongoDB数据库
00

目录

一、MongoDB的安装图形化工具
(1) 安装可视化编辑器 🛠️💾
二、MongoDB的基本操作
(1)基本概念
(2)基本指令
基本指令
三、数据库的CRUD操作
(1)插入数据
1. 使用 db.<collection>.insert() 插入文档
2. 使用 db.collection.insertOne() 插入单个文档
3. 使用 db.collection.insertMany() 插入多个文档
4. 自定义文档 _id
5.使用 db.collection.insert() 插入多个文档
6.查询插入的文档
(2)查询数据
1. 查询所有文档
2. 条件查询
示例:
3. 查询单个文档
示例:
4. 查询结果数量
(3)修改数据
示例操作:
(4)删除文档
示例操作:

MongoDB数据库使用(三)

这篇文章主要介绍了MongoDB数据库的使用,包括安装可视化编辑器、基本操作概念、CRUD操作以及如何进行数据的插入、查询、修改和删除。

一、MongoDB的安装图形化工具

(1) 安装可视化编辑器 🛠️💾

二、MongoDB的基本操作

(1)基本概念

  • 数据库(database)
  • 集合(collection)
  • 文档(document)

在MongoDB中,数据库和集合都不需要手动创建。当我们创建文档时,如果文档所在的集合或数据库不存在,MongoDB会自动创建数据库和集合

(2)基本指令

基本指令

  • show dbsshow databases
    • 用于查看所有的数据库。
  • use xxx
    • 用于切换到指定的数据库,其中 xxx 应替换为目标数据库的名称。
  • db
    • 用于查看当前操作的数据库。
  • show collections
    • 用于查看当前数据库中所有的集合。
  • db.collections.find()
    • 用于查看插入到集合中的文档

三、数据库的CRUD操作

(1)插入数据

MongoDB允许您向集合中插入文档,可以使用以下方法:

1. 使用 db..insert() 插入文档

  • 使用 db.<collection>.insert() 可以向集合中插入一个或多个文档。
  • 如果在插入文档时没有给文档指定 _id 属性,MongoDB会自动为文档添加 _id 属性,该属性用作文档的唯一标识。
  • 如果您自己指定了 _id,则确保它的唯一性。
jsx
db.stus.insert( { name: "猪八戒", age: 28, gender: "男" } );

2. 使用 db.collection.insertOne() 插入单个文档

  • 使用 db.collection.insertOne() 方法可以插入单个文档对象。
jsx
db.stus.insertOne( { name: "猪八戒", age: 28, gender: "男" } );

3. 使用 db.collection.insertMany() 插入多个文档

  • 使用 db.collection.insertMany() 方法可以插入多个文档对象,这些文档对象以数组的形式传递。
jsx
db.stus.insertMany([ { name: "沙和尚", age: 38, gender: "男" }, { name: "白骨精", age: 16, gender: "女" }, { name: "蜘蛛精", age: 14, gender: "女" } ]);

4. 自定义文档 _id

  • 您可以自己指定文档的 _id 属性,前提是要确保它的唯一性。
jsx
db.stus.insert( { _id: "hello", name: "猪八戒", age: 28, gender: "男" } );

5.使用 db.collection.insert() 插入多个文档

jsx
db.stus.insert([ {name:"沙和尚",age:38,gender:"男"}, {name:"白骨精",age:16,gender:"女"}, {name:"蜘蛛精",age:14,gender:"女"} ]);

6.查询插入的文档

  • 要查看插入到集合中的文档,可以使用 db.collection.find() 方法。
jsx
db.stus.find();

(2)查询数据

1. 查询所有文档

jsx
db.collection.find({})
  • 使用 find({}) 查询可以获取集合中的所有文档,其中 {} 表示查询条件为空,意味着返回所有文档。
  • 查询结果将以 **数组的形式返回** 。

2. 条件查询

jsx
db.collection.find({属性: 值})
  • 使用 find() 方法可以根据指定的条件查询文档,其中 {属性: 值} 表示要查询属性等于指定值的文档。
  • 查询结果将以 **数组的形式返回** 。

示例:

jsx
db.stus.find({_id: "hello"}); db.stus.find({age: 16, name: "白骨精"}); db.stus.find({age: 28});

3. 查询单个文档

jsx
db.collection.findOne({属性: 值})
  • 使用 findOne() 方法可以查询符合条件的第一个文档,而不是返回所有匹配的文档。
  • 查询结果将以文档对象的形式返回。

示例:

jsx
db.stus.findOne({age: 28});

4. 查询结果数量

jsx
db.collection.find({}).count()
  • 使用 count() 方法可以查询集合中所有结果的数量。
  • 这个方法通常用于获取满足查询条件的文档数量。

(3)修改数据

在 MongoDB 中,您可以使用 db.collection.update() 方法来进行数据更新操作。以下是一些关于更新操作的重要概念和方法:

  • db.collection.update(查询条件, 新对象): 默认情况下,update() 方法会使用新对象来替换匹配查询条件的旧对象。
  • 若要修改指定属性而不是替换整个文档,您可以使用修改操作符,例如:
    • $set:用于修改文档中的指定属性。
    • $unset:用于删除文档的指定属性。
  • db.collection.updateMany(): 用于同时修改多个符合条件的文档。
  • db.collection.updateOne(): 用于修改一个符合条件的文档。
  • db.collection.replaceOne(): 用于替换一个符合条件的文档。

示例操作:

jsx
// 查询所有文档 db.stus.find() // 使用update()替换年龄属性 db.stus.update( { name: "沙和尚" }, { age: 28 } ) // 使用$set修改性别和地址属性 db.stus.update( { "_id": ObjectId("5f86edc1048d21081bd45f3b") }, { $set: { gender: "男", address: "流沙河" } } ) // 使用$unset删除地址属性 db.stus.update( { "_id": ObjectId("5f86edc1048d21081bd45f3b") }, { $unset: { address: "流沙河" } } ) // 使用updateMany()修改多个文档的地址属性 db.stus.updateMany( { name: "我很帅" }, { $set: { address: "高老庄" } } ) // 使用update()和multi:true修改多个文档的地址属性 db.stus.update( { name: "我很帅" }, { $set: { address: "呵呵呵" } }, { multi: true } ) // 查询所有文档 db.stus.find()

(4)删除文档

在 MongoDB 中,您可以使用不同的方法来删除文档或集合。以下是一些关于删除操作的重要概念和方法:

  • db.collection.remove(): 可以根据条件删除文档,传递条件的方式和 find() 方法一样。默认情况下,它会删除符合条件的所有文档,但您可以传递第二个参数为 true 来只删除一个文档。如果只传递一个 {} 作为参数,将删除集合中的所有文档。
  • db.collection.deleteOne(): 用于删除一个符合条件的文档。
  • db.collection.deleteMany(): 用于删除多个符合条件的文档。
  • db.collection.drop(): 用于删除整个集合,如果删除的是最后一个集合,数据库也会被删除。
  • db.dropDatabase(): 用于删除整个数据库。

示例操作:

jsx
// 删除年龄为 28 的一个文档 db.stus.remove({ age: 28 }, true) // 删除集合中的所有文档(性能差) db.stus.remove({}) // 删除集合 stus db.stus.drop() // 删除整个数据库 db.dropDatabase()
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:LiuXueChao

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!