mongodb查询 - 笔记
# mongodb 查询语句
mongodb :分布式文件存储数据库,介于关系数据库和非关系数据库之间,概念:collection(table),document(row),field(column)
TYCHtml数据库:
## 1、查询document数量
db.getCollection('companys').find({}).count()
## 2、find()
db.getCollection('companys').find({"_id":ObjectId("59c12543e1382308c4e0f786")})
= select * from companys where _id="59c12542e1382308c4e0f262"
db.getCollection('companys').find({},{"summary":1})
=select summary from companys
内嵌文档查询:
db.getCollection('companys').find({"summary.reportCount":4}).limit(1)
db.getCollection('companys').find({"staffCount":{$elemMatch:{"position":"监事","name":"宋家林"}}}).limit(1)
db.getCollection('companys').find({"summary.reportCount":4,"summary.checkCount":1}).limit(1)
MongoDB提供了一组比较操作符:
| $lt | < |
| :--: | :--: |
| $lte | <= |
| $gt | > |
| $gte | >= |
| $ne | != |
删除数据库:db.dropDatabase()
查看所有数据库:show dbs
创建数据库:use runoob
插入文档:db.COLLECTION_NAME(document)
更新文档:db.collection.update()
使用$elemMatch操作符查询
模糊查询 $regex
mongodb 更新有两个命令:update\save
数据更新操作符:
$inc:
用法:{$inc:{field:value}}
作用:对一个数字字段的某个field增加value
例:{ "_id" : ObjectId("5030f7ac721e16c4ab180cdb"), "name" : "chenzhou", "age" : 22}
将name为chenzhou的学生age增加5
db.students.update({"name":"chenzhou"},{$inc:{"age":5}})
$set:
用法:{$set:{field:value}}
作用:把文档中某个字段field的值设为value
$unset:
用法:{$unset:{field:1}}
作用:删除某个字段field
例:
db.students.update({"name":"chenzhou"},{$unset:{"age":1}})
$push:
用法:{$push:{field:value}}
作用:把value追加到field中,(field只能是数组类型,如果field不存在,自动插入一个数组类型)
$pushAll:
用法:{$pushAll:{field:value_array}}
作用:用法同$push一样,只是$pushAll可以一次追加多个值到一个数组字段内
$addToSet:
用法:{$addToSet:{field:value}}
作用:加一个值到数组内,而且只有当这个值在数组中不存在时才增加。
$pop:
用法:删除数组内第一个值:{$pop:{field:-1}}、删除数组内最后一个值:{$pop:{field:1}}
作用:用于删除数组内的一个值
$pull:
用法:{$pull:{field:_value}}
作用:从数组field内删除一个等于_value的值
$pullAll:
用法:{$pullAll:value_array}
作用:用法同$pull一样,可以一次性删除数组内的多个值
$rename:
用法:{$rename:{old_field_name:new_field_name}}
作用:对字段进行重命名
标签:
mongodb 查询
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 Redis 客户端超时到 .NET 线程池挑战
· C23和C++26的#embed嵌入资源指南
· 「EF Core」框架是如何识别实体类的属性和主键的
· 独立开发,这条路可行吗?
· 我在厂里搞 wine 的日子
· 他没买 iPad,而是花了半年时间,为所有“穷学生”写了个笔记神器
· Visual Studio 现已支持新的、更简洁的解决方案文件(slnx)格式
· 只需一行命令,Win11秒变Linux开发主机!
· 上周热点回顾(7.7-7.13)
· 也是出息了,业务代码里面也用上算法了。