Bootstrap

Mongodb新增文档、查询文档、更新文档、删除文档

1、新增文档

1.1、进入容器

[root@localhost docker]# docker exec -it mongodb mongosh
Current Mongosh Log ID: 66a8ce38d0b85e052bb78f05
Connecting to:          mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.10.6
Using MongoDB:          7.0.0
Using Mongosh:          1.10.6

For mongosh info see: https://docs.mongodb.com/mongodb-shell/

------
   The server generated these startup warnings when booting
   2024-07-30T10:58:29.512+00:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
   2024-07-30T10:58:29.513+00:00: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never'
   2024-07-30T10:58:29.513+00:00: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. We suggest setting it to 'never'
   2024-07-30T10:58:29.513+00:00: vm.max_map_count is too low
------

test> 

1.2、向集合插入一个新文档

atguigu> db.myCollection.insertOne({name:'小蓝',age:21})
{
  acknowledged: true,
  insertedId: ObjectId("66a9b0067066bd635ba48cf0")
}

1.3、查询文档

atguigu> db.myCollection.find()
[
  { _id: ObjectId("66a99e507066bd635ba48cef"), name: '小明', age: 20 },
  { _id: ObjectId("66a9b0067066bd635ba48cf0"), name: '小蓝', age: 21 }
]

1.4、向集合插入一个或者多个文档

atguigu> db.myCollection.insertMany([{name:'小狗',age:22,gender:'女'},{name:'小猫',age:23,gender:'男'}])
{
  acknowledged: true,
  insertedIds: {
    '0': ObjectId("66a9b2597066bd635ba48cf1"),
    '1': ObjectId("66a9b2597066bd635ba48cf2")
  }
}
atguigu> db.myCollection.find()
[
  { _id: ObjectId("66a99e507066bd635ba48cef"), name: '小明', age: 20 },
  { _id: ObjectId("66a9b0067066bd635ba48cf0"), name: '小蓝', age: 21 },
  {
    _id: ObjectId("66a9b2597066bd635ba48cf1"),
    name: '小狗',
    age: 22,
    gender: '女'
  },
  {
    _id: ObjectId("66a9b2597066bd635ba48cf2"),
    name: '小猫',
    age: 23,
    gender: '男'
  }
]

2、查询文档

2.1、查询年龄等于20

atguigu> db.myCollection.find({age:20})
[ { _id: ObjectId("66a99e507066bd635ba48cef"), name: '小明', age: 20 } ]
atguigu> db.myCollection.insertMany([{name:'小牛',age:23,gender:'男'},{name:'小羊',age:20,gender:'男'}])
{
  acknowledged: true,
  insertedIds: {
    '0': ObjectId("66a9cf7d7066bd635ba48cf3"),
    '1': ObjectId("66a9cf7d7066bd635ba48cf4")
  }
}
atguigu> db.myCollection.find({age:20})
[
  { _id: ObjectId("66a99e507066bd635ba48cef"), name: '小明', age: 20 },
  {
    _id: ObjectId("66a9cf7d7066bd635ba48cf4"),
    name: '小羊',
    age: 20,
    gender: '男'
  }
]

2.2、查询年龄是20的男性

atguigu> db.myCollection.find({age:20,gender:'男'})
[
  {
    _id: ObjectId("66a9cf7d7066bd635ba48cf4"),
    name: '小羊',
    age: 20,
    gender: '男'
  }
]

2.3、查询年龄是20或者性别是男

atguigu> db.myCollection.find({$or:[{age:20},{gender:'男'}]})
[
  { _id: ObjectId("66a99e507066bd635ba48cef"), name: '小明', age: 20 },
  {
    _id: ObjectId("66a9b2597066bd635ba48cf2"),
    name: '小猫',
    age: 23,
    gender: '男'
  },
  {
    _id: ObjectId("66a9cf7d7066bd635ba48cf3"),
    name: '小牛',
    age: 23,
    gender: '男'
  },
  {
    _id: ObjectId("66a9cf7d7066bd635ba48cf4"),
    name: '小羊',
    age: 20,
    gender: '男'
  }
]

2.4、查询年龄小于23

atguigu> db.myCollection.find({age:{$lt:23}})
[
  { _id: ObjectId("66a99e507066bd635ba48cef"), name: '小明', age: 20 },
  { _id: ObjectId("66a9b0067066bd635ba48cf0"), name: '小蓝', age: 21 },
  {
    _id: ObjectId("66a9b2597066bd635ba48cf1"),
    name: '小狗',
    age: 22,
    gender: '女'
  },
  {
    _id: ObjectId("66a9cf7d7066bd635ba48cf4"),
    name: '小羊',
    age: 20,
    gender: '男'
  }
]

2.5、查询年龄小于等于23

atguigu> db.myCollection.find({age:{$lte:23}})
[
  { _id: ObjectId("66a99e507066bd635ba48cef"), name: '小明', age: 20 },
  { _id: ObjectId("66a9b0067066bd635ba48cf0"), name: '小蓝', age: 21 },
  {
    _id: ObjectId("66a9b2597066bd635ba48cf1"),
    name: '小狗',
    age: 22,
    gender: '女'
  },
  {
    _id: ObjectId("66a9b2597066bd635ba48cf2"),
    name: '小猫',
    age: 23,
    gender: '男'
  },
  {
    _id: ObjectId("66a9cf7d7066bd635ba48cf3"),
    name: '小牛',
    age: 23,
    gender: '男'
  },
  {
    _id: ObjectId("66a9cf7d7066bd635ba48cf4"),
    name: '小羊',
    age: 20,
    gender: '男'
  }
]

2.6、查询大于等于23

atguigu> db.myCollection.find({age:{$gte:23}})
[
  {
    _id: ObjectId("66a9b2597066bd635ba48cf2"),
    name: '小猫',
    age: 23,
    gender: '男'
  },
  {
    _id: ObjectId("66a9cf7d7066bd635ba48cf3"),
    name: '小牛',
    age: 23,
    gender: '男'
  }
]

2.7、查询年龄不等于23

atguigu> db.myCollection.find({age:{$ne:23}})
[
  { _id: ObjectId("66a99e507066bd635ba48cef"), name: '小明', age: 20 },
  { _id: ObjectId("66a9b0067066bd635ba48cf0"), name: '小蓝', age: 21 },
  {
    _id: ObjectId("66a9b2597066bd635ba48cf1"),
    name: '小狗',
    age: 22,
    gender: '女'
  },
  {
    _id: ObjectId("66a9cf7d7066bd635ba48cf4"),
    name: '小羊',
    age: 20,
    gender: '男'
  }
]

2.8、模糊查询包含 小 的名字

atguigu> db.myCollection.find({name:{$regex:'小'}})
[
  { _id: ObjectId("66a99e507066bd635ba48cef"), name: '小明', age: 20 },
  { _id: ObjectId("66a9b0067066bd635ba48cf0"), name: '小蓝', age: 21 },
  {
    _id: ObjectId("66a9b2597066bd635ba48cf1"),
    name: '小狗',
    age: 22,
    gender: '女'
  },
  {
    _id: ObjectId("66a9b2597066bd635ba48cf2"),
    name: '小猫',
    age: 23,
    gender: '男'
  },
  {
    _id: ObjectId("66a9cf7d7066bd635ba48cf3"),
    name: '小牛',
    age: 23,
    gender: '男'
  },
  {
    _id: ObjectId("66a9cf7d7066bd635ba48cf4"),
    name: '小羊',
    age: 20,
    gender: '男'
  }
]
atguigu> db.myCollection.find({name://})
[
  { _id: ObjectId("66a99e507066bd635ba48cef"), name: '小明', age: 20 },
  { _id: ObjectId("66a9b0067066bd635ba48cf0"), name: '小蓝', age: 21 },
  {
    _id: ObjectId("66a9b2597066bd635ba48cf1"),
    name: '小狗',
    age: 22,
    gender: '女'
  },
  {
    _id: ObjectId("66a9b2597066bd635ba48cf2"),
    name: '小猫',
    age: 23,
    gender: '男'
  },
  {
    _id: ObjectId("66a9cf7d7066bd635ba48cf3"),
    name: '小牛',
    age: 23,
    gender: '男'
  },
  {
    _id: ObjectId("66a9cf7d7066bd635ba48cf4"),
    name: '小羊',
    age: 20,
    gender: '男'
  }
]

2.9、模糊查询包含 小 的名字 以及 升序 排序

atguigu> db.myCollection.find({name://}).sort({age:1})
[
  { _id: ObjectId("66a99e507066bd635ba48cef"), name: '小明', age: 20 },
  {
    _id: ObjectId("66a9cf7d7066bd635ba48cf4"),
    name: '小羊',
    age: 20,
    gender: '男'
  },
  { _id: ObjectId("66a9b0067066bd635ba48cf0"), name: '小蓝', age: 21 },
  {
    _id: ObjectId("66a9b2597066bd635ba48cf1"),
    name: '小狗',
    age: 22,
    gender: '女'
  },
  {
    _id: ObjectId("66a9b2597066bd635ba48cf2"),
    name: '小猫',
    age: 23,
    gender: '男'
  },
  {
    _id: ObjectId("66a9cf7d7066bd635ba48cf3"),
    name: '小牛',
    age: 23,
    gender: '男'
  }
]

2.10、模糊查询包含 小 的名字 以及 降序 排序

atguigu> db.myCollection.find({name://}).sort({age:-1})
[
  {
    _id: ObjectId("66a9b2597066bd635ba48cf2"),
    name: '小猫',
    age: 23,
    gender: '男'
  },
  {
    _id: ObjectId("66a9cf7d7066bd635ba48cf3"),
    name: '小牛',
    age: 23,
    gender: '男'
  },
  {
    _id: ObjectId("66a9b2597066bd635ba48cf1"),
    name: '小狗',
    age: 22,
    gender: '女'
  },
  { _id: ObjectId("66a9b0067066bd635ba48cf0"), name: '小蓝', age: 21 },
  { _id: ObjectId("66a99e507066bd635ba48cef"), name: '小明', age: 20 },
  {
    _id: ObjectId("66a9cf7d7066bd635ba48cf4"),
    name: '小羊',
    age: 20,
    gender: '男'
  }
]

2.11、跳过前两个匹配的文档,然后返回接下来的两个文档

atguigu> db.myCollection.find({name://}).sort({age:-1}).limit(2).skip(2)
[
  {
    _id: ObjectId("66a9b2597066bd635ba48cf1"),
    name: '小狗',
    age: 22,
    gender: '女'
  },
  { _id: ObjectId("66a9b0067066bd635ba48cf0"), name: '小蓝', age: 21 }
]

3、更新文档

3.1、更新({name:‘小羊’},{$set:{age:30,gender:‘女’}})匹配的文档

atguigu> db.myCollection.update({name:'小羊'},{$set:{age:30,gender:'女'}})
DeprecationWarning: Collection.update() is deprecated. Use updateOne, updateMany, or bulkWrite.
{
  acknowledged: true,
  insertedId: null,
  matchedCount: 1,
  modifiedCount: 1,
  upsertedCount: 0
}

3.2、更新({age:23},{$set:{age:30}})匹配的文档

atguigu> db.myCollection.updateOne({age:23},{$set:{age:30}})
{
  acknowledged: true,
  insertedId: null,
  matchedCount: 1,
  modifiedCount: 1,
  upsertedCount: 0
}

3.3、更新({age:30},{$set:{age:23}})匹配的文档

atguigu> db.myCollection.updateMany({age:30},{$set:{age:23}})
{
  acknowledged: true,
  insertedId: null,
  matchedCount: 3,
  modifiedCount: 3,
  upsertedCount: 0
}

3.4、更新({name:/小/},{$set:{age:22}})匹配的文档

atguigu> db.myCollection.updateMany({name://},{$set:{age:22}})
{
  acknowledged: true,
  insertedId: null,
  matchedCount: 6,
  modifiedCount: 5,
  upsertedCount: 0
}

4、删除文档

4.1、删除age等于21的文档

atguigu> db.myCollection.remove({age:21})
DeprecationWarning: Collection.remove() is deprecated. Use deleteOne, deleteMany, findOneAndDelete, or bulkWrite.
{ acknowledged: true, deletedCount: 0 }

4.2、查找第一个age字段值为22的文档,并将其删除

atguigu> db.myCollection.deleteOne({age:22})
{ acknowledged: true, deletedCount: 1 }

4.3、查找所有age字段值为22的文档,并将它们全部删除

atguigu> db.myCollection.deleteMany({age:22})
{ acknowledged: true, deletedCount: 5 }

在这里插入图片描述

;