MongoDB - 语句Cheatsheet

CURD

insert

db.collection.insertOne()
db.collection.insertMany()

db.fruits.insertOne({name:"apple"})
db.fruits.insertMany([
{name:"apple"},
{name:"pear"}
])

find

单条件查询:db.movies.find({"year":1997})
多条件与查询:
db.movies.find({"year":1997,"type":"action"})db.movies.find({$and:[{"year":1997}, {"type":"action"}]})
多条件或查询:
db.movies.find({$or:[{"year":1997},{"type":"action"}]})
正则表达式查询:
db.movies.find({"title":/^B/})

查询条件条件对照表

查询逻辑条件对照表

搜索子文档

🌰case 1

db.fruits.insertOne({
  name:"apple",
  from: {
    country:"China",
    province:"Guangdon"
  }
})

db.fruits.find({"from.country":""China})
db.fruits.find({"from":{country:"China"}})
两者意义不同,前者搜索from子文档country字段为China的;后者搜索from子文档只有一个country字段且为China的

搜索数组

🌰case 2

db.fruits.insertMany([
  { name:"apple", color : ["red", "green"] },
  { name:"Mango", color : ["yellow","green"]}
])

db.fruits.find({color:"red"})
即找到color数组里面有red的记录,会有一条数据
db.fruits.find({$or:[{color:"red"},{color:"yellow"}]})
即找到color数组里面有red或有yellow的记录,会有两条结果

控制find返回的字段 projection

e.g. db.movies.find({"type":"action"},{"_id":0,"title":1})
即返回字段只有title,连mongodb默认的id也不返回

remove

删除a=1的记录:db.collection.remove({a:1})
删除a小于5的记录:
db.collection.remove({a:{$lt:5}})
删除所有记录:
db.movies.remove({})

update

db.fruits.updateOne({name:"apple"}, {$set:{from:"China"}})
查询条件和更新操作都是必须的

  • updateOne只更新第一条,updateMany匹配多少更新多少
  • 更新部分必须具备以下操作符之一:
    • $set/$unset
    • $push/$pushAll/$pop
      push:增加一个对象到数组底部
      pushAll:增加多个对象到数组底部
      pop:从数组底部删除一个对象
    • $pull/$pullAll
      pull:如果匹配指定的值,从数组删除相应对象
    • $addToSet
      如果不存在则增加一个值到数组

drop

db.collection.drop()

聚合 Aggregate

概念

  • Pipeline 即为聚合的整个管道流程
  • Stage 每个流程的步骤
    pipeline = [$stage1, $stage2, ...]
db.collection.aggregate(
  pipeline,
  { option }
);

常见步骤

常见步骤

常见步骤的运算符

SQL和MQL对比

🌰 1

对比1-sql
⬇️
对比1-mql
🌰2

对比2-sql
⬇️
对比2-mql

其他

查询某个字段不为null:db.col.findOne({"fieldName":{$ne:null}})

todo
mongodb有优化器吗?
mongodb里什么时候加不加引号?

posted @   rachel_aoao  阅读(40)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示