MongoDB学习2:MongoDB的基本操作

以下都是基于MongoShell进行操作

1.使用insert进行插入操作

 示例:

db.<集合>.insertOne(<JSON对象>)
db.<集合>.insertMany([<JSON1>,<JSON2>,...<JSON n>])

例如:
db.fruit.insertOne({name:"apple"})
db.fruit.insertMany([
      {name:"apple"},
      {name:"pear"},
      {name:"orange"}
])

2.使用find查询文档

 2.1 关于find

   2.1.1 find是MongoDB中查询数据的基本指令,相当于SQL中的SELECT

   2.1.2 find返回的是游标

 2.2 示例

db.movie.find({"year":1975})  //单条件查询
db.movie.find({"year":1976,"title":"Batman"})  //多条件and查询
db.movie.find({$and:[{"title":"Batman"},{"category":"action"}]})  //and的另一种形式
db.movie.find({$or:[{"year":1989,{"title":"Batman"}}]})  //多条件or查询
db.movie.find({"title":/^B/}) //按正则表达式查找 B开头的

  SQL和MQL查询对照表

SQLMQL
a == 1{ a: 1 }
a <> 1{ a: {$ne:1 } }
a > 1{ a: {$gt: 1} }
a >= 1{ a: {$gte: 1} }
a < 1{ a: {$lt: 1} }
a <= 1{ a: {$lte: 1} }
a = 1 and b = 1{ a: 1,b: 1 } 或 { $and: {a: 1},{b: 1} }
a = 1 or b = 1{ $or: [{a: 1},{b: 1}]} }
a is null { a: {$exists: false} }
a in (1,2,3){ a: {$in:[1,2,3]} }
SQLMQL
$lt存在并小于
$lte存在并小于等于
$gt存在并大于
$gte存在并大于等于
$ne不存在或存在但不等于
$in存在并在指定数组中
$nin不存在或不在指定数组中
$or匹配两个或多个条件中的一个
$and匹配全部条件

 2.3 使用find搜索子文档

  2.3.1 支持"field.sub_field"的形式查询子文档

假设有如下数据
db.fruit.insertOne({
  "name":"apple",
  "from":{
    country:"China",
    province:"Beijing"
  }
})

db.fruit.find({"from.country":"China"})  //查询from下counrty是China的文档

db.fruit.find({"from":{country:"China"}})  //错误写法

3.使用remove删除文档

  • remove命令需要配合查询条件使用
  • 匹配到查询条件的文档会被删除
  • 指定一个空文档条件会删除所有文档

  3.1 示例

db.movie.remove({a:1})  //删除a等于1的记录
db.movie.remove({a:{$lt:5}})  //删除a小于5的记录
db.movie.remove({})  //删除所有记录
db.movie.remove()  //会报错

4.使用update更新文档

  4.1 示例

db.<集合>.update(<查询条件>,<更新字段>)

db.fruit.updateOne({name:"apple"},{$set,{name:"banana"}}) //将name为apple的记录更新为banana
db.fruit.updateOne({name:"apple"},{$set,{from:"China"}}) //将name为apple的记录的from字段更新为China,如果没有这个字段则会新增上
  • 使用updateOne表示无论条件匹配了多少记录,始终只更新第一条
  • 使用updateMany表示条件匹配多少条就更新多少条
  • updateOne/updateMany方法要求更新条件部分必须有以下之一,否则会报错
    • $set/$unset
    • $push/$pushAll/$pop
    • $pull/$pullAll
    • $addToSet
$push增加一个对象到数组底部
$pushAll增加多个对象到数组底部
$pop从数组底部删除一个对象
$pull如果匹配指定的值,从数组中删除相对应的对象
$pullAll如果匹配任意的值,从数据中删除对应的对象
$addToSet如果不存在则增加一个值到数组

4.使用drop删除集合

  • 使用 db.<集合>.drop()来删除一个集合
  • 集合中的全部文档都会被删除
  • 集合相关的索引也会被删除

5.使用dropDatabase删除数据库

  • 使用db.dropDatabase()来删除数据库
  • 数据库相应的文件会被删除,磁盘空间将被释放
posted @ 2020-08-02 21:56  等一个,晴天  阅读(139)  评论(0编辑  收藏  举报