Published on

MongoDB 基础操作指南:插入、查询、更新与删除语法详解

Authors
  • avatar
    Name
    Liant
    Twitter

Mongo基本操作

  • 插入一条数据
db.集合名称.insertOne(json内容)
  • 批量插入数据
db.集合名称.insertMany([json内容,json内容,json内容,json内容])
  • find查询
// 单条件查询
db.集合名称.find({"year":1975})
// 多条件查询
db.集合名称.find({"year":1975,"title:"Batman"})
// and多条件查询
db.集合名称.find({$and:[{"year":1975},{"title:"Batman"}]})
// 多条件or(或)查询
db.集合名称.find({$or:[{"year":1975},{"title:"Batman"}]})
// 正则查询,title字段里以B开头的
db.集合名称.find({"title":/^B/})
sql语法                     mql语法
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]}}
  • 查询逻辑运算符

    • $lt: 存在并小于
    • $lte: 存在并小于等于
    • $gt: 存在并大于
    • $gte: 存在并大于等于
    • $ne: 不存在或存在但不等于
    • $in: 存在并在指定数组中
    • $nin: 不存在或不在指定数组中
    • $or: 匹配两个或多个条件中的一个
    • $and: 匹配全部条件
  • 在数组中搜索对象的多个字段时,如果使用$elemMatch,它表示必须是同一个子对象满足多个条件。

db.集合名.find({字段名:{$elemMatch:{"子字段1":"值1","子字段2":"值2"}}})
  • 控制find返回的字段
db.集合名.find({"字段名":"值"},{"_id":0,"title":1}) // 表示不返回id,只返回title
  • 使用remove删除文档

      1. remove命令需要配合查询条件使用
      1. 匹配查询条件的文档会被删除
      1. 指定一个空文档条件会删除所有文档
  • 以下示例:

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

使用update更新文档

  • update操作执行格式:db.集合.update(查询条件,更新字段)

  • 字段更新

// 这个操作是匹配name值为apple的,如果有字段from的话,将字段值改为China,如果没有就添加该字段。
db.集合.updateOne({name:"apple"},{$set:{from:"China"}})

update说明

    1. 使用updateOne表示无论条件匹配多少条记录,始终只更新第一条;
    1. 使用updateMany表示条件匹配多少条就更新多少条;
    1. updateOne/uodateMany方法要求更新条件部分必须具有以下之一,否则将报错:
      1. $set/$unset
      1. $push/$pushAll/$pop
      1. $pull/$pullAll
      1. $addToSet
  • 上述解释:

$push: 增加一个对象到数组底部
$pushAll: 增加多个对象到数组底部
$pop: 从数组底部删除一个对象
$pull: 如果匹配指定的值,从数组中删除相应的对象
$pullAll: 如果匹配指定的值,从数组中删除相应的对象
$addToSet: 如果不存在则增加一个值到数组
  • 删除表(集合)或者库
db.集合.drop() // 删除表
// 进入库
use test
// 显示当前库
db
// 删除库
db.dropDatabase()
- 注:上述删除都是危险操作,一般不要轻易使用