MongoDB从入门到精通

本文详细介绍了MongoDB的安装配置、基本概念、CRUD操作,包括插入、查询、修改和删除文档。重点讲解了更新操作的各种方法,如update、updateMany、updateOne、replaceOne。此外,还探讨了文档之间的关系、sort和投影的使用,以及在Node.js中使用mongoose进行数据库操作,包括连接、模型和文档对象的交互。强调了练习在掌握MongoDB过程中的重要性。
摘要由CSDN通过智能技术生成

一、安装与配置

mongodb
mongodb
mongodb

二、基本概念

mongodb

三、基本指令

mongodb

四、数据库的CRUD(增删改查)操作

mongodb

插入文档

db.<collection>.insert()

  • 向集合中插入一个或多个文档
  • 当我们向集合中插入文档时,如果没有给文档指定_id属性,则数据库会自动为文档添加_id,该属性用来作为文档的唯一标识
  • _id我们可以自己指定,如果我们指定了数据库就不会再添加了,但自己指定也必须确保它的唯一性
db.stus.insert({
   name:"猪八戒", age:28, gender:"男"})

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

db.stus.insert({
   _id:"hello", name:"猪八戒", age:28, gender:"男"})

db.<collection>.insertOne()

  • 将单个文档插入集合中。

db.<collection>.insertMany()

  • 可以将多个文档插入一个集合中。将文档数组传递给该方法。

查询文档

db.<collection>.find()

  • find()用来查询集合中所有符合条件的文档
  • find()可以接收一个对象作为条件参数
    • {}表示查询集合中所有的文档
    • {属性: 值}查询属性是指定值的文档
  • find()返回的是一个数组
db.stus.find({
   _id:"hello"})

db.stus.find({
   age:16, name:"白骨精"})

db.stus.find({
   age:16})[0]

db.<collection>.findOne()

  • 用来查询集合中符合条件的第一个文档
  • findOne()返回的是一个文档对象

db.<collection>.find({}).count()

  • 查询所有结果的数量

修改文档

db.<collection>.update(查询对象, 要修改的新对象)

  • update()默认情况下会使用新对象来替换旧对象
  • 如果需要修改指定的属性而不是替换,则需要使用“修改操作符”来完成修改
    • $set可以用来修改文档中的指定属性。
    • $unset可以用来删除文档中的指定属性。
    • $push用于向数组中添加一个新的元素,它不会考虑元素是否重复。
    • $addToSet用于向数组中添加一个新的元素,如果数组中已经存在该元素,则不会添加。
  • update()默认只会修改一个
db.stus.update({
   name:"沙和尚"}, {
   age:28}) // 基本不用, 因为这是整体替换操作

db.stus.update(
	{
   age:26},
	{
   
		$set:{
   
		gender:"男",
		address:"流沙河"
		} // 匹配到第一个后只修改对应的属性而不是整体替换,如果没有此属性,则新增
	}
)

db.stus.update(
	{
   age:26},
	{
   
		$unset:{
   
		address:1
		} // 匹配到第一个后只删除对应的属性,此时的属性值就可以任意写
	}
)

db.stus.update(
	{
   age:26},
	{
   
		$set:{
   
		gender:"男",
		address:"流沙河"
		} // 匹配到所有满足条件的文档后只修改对应的属性而不是整体替换,如果没有此属性,则新增
	},
	{
   
		multi:true // 可以匹配多个
	}
)

db.<collection>.updateMany()

  • 同时修改多个符合条件的文档
db.stus.updateMany(
	{
   age:26},
	{
   
		$set:{
   
		gender:"男",
		address:"流沙河"
		} // 匹配到所有满足条件的文档后只修改对应的属性而不是整体替换,如果没有此属性,则新增
	}
)

db.<collection>.updateOne()

  • 修改一个符合条件的文档

db.<collection>.replaceOne()

  • 替换一个文档

删除文档

db.<collection>.remove()

  • remove()可以根据条件来删除文档,传递条件的方式和find()一样
  • 删除符合条件的所有文档(默认情况下会删除多个
  • 如果remove()第二个参数传递一个true,则只会删除一个
  • 如果remove()只传递一个空对象作为参数,则会删除集合中的所有文档
db.stus.remove({
   _id:123456})

db.stus.remove({
   age:28}, true)

// 清空集合(性能略差,因为是一个个删,删完集合还存在)
db.stus.remove({
   }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值