对于关系数据库来说,在一张2.5亿条记录的表里面进行SQL查询,效率是极其低下乃至不可忍受的。
文档(document)、集合(collection)、数据库(database)
Collenction
集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。
集合的概念类似关系型数据库里的表Table
集合的模式自由(table的不自由)
下面两个记录可以存在于同一个集合里面:
{"welcome" : "Beijing"}
{"age" : 25}
当然在实际应用我们存储的还是相同类型文档的集合.
这个特性其实可以在应用里很灵活, 你不需要类似 alter table 语句来修改你的数据结构
db.c1.find()
db.c1.count()
db.c1.save() == db.c1.insert()
# tar = {_id:3, name:"Bill_new", age:55}
# db.c1.save(tar) == db.c1.insert(tar)
db.c1.update()
# get = {_id:3}
# tar = {_id:3, name:"Bill_new", age:55, sex:1}
# db.c1.update(get, {$set:tar})
db.c1.remove()
# get = {_id:3}
# db.c1.remove(get)
>>>>>>>
for(var a=0; a<100000; a++) db.things.save({_id:a, date:(new Date())})
db.things.find()
=====
>999
cond = {_id:{$gt:999}}
db.things.find(cond)
=====
>999 AND <1006
cond = {_id:{$gt:999,$lt:1006}}
db.things.find(cond)
=====
跟SQL语法 in 类似,但不同的是, in 只需满足( )内的某一个值即可, 而$all必须满足[ ]内的所有值
cond = {_id:{$all:[4,40,400,4000,40000]}}
db.things.find(cond)
cond = {_id:{$all:[40000]}}
db.things.find(cond)
=====
insert() 快于 save()
for(var a=100000; a<200000; a++) db.things.insert({_id:a, date:(new Date()), name:'obj_'+a})
db.things.find(cond)
=====
$exists 判断字段是否存在
cond = {name:{$exists:true}}
db.things.find(cond)
=====
mysql望尘莫及的操作出现了
for(var a=100000; a<200000; a++) db.things.save({_id:a, date:(new Date()), type:'weekly_star'})
update() insert() 都是小招
save() 屠龙
=====
cond = {name:{$exists:true}}
db.things.find(cond).count()
cond = {type: {$exists:true}}
db.things.find(cond).count()
=====
$ne 不等于
$nin 不包含
$in 与 sql 标准语法的用途是一样的
cond = {_id:{$ne:1}}
db.things.find(cond)
cond = {_id:{$nin:[1,2,3]}}
db.things.find(cond)
cond = {_id:{$in:[4,40,400,4000,40000]}}
db.things.find(cond)
=====
$size 数组元素个数
正则表达式匹配
=====
skip() limit()
从第 199990 条记录开始,返回 2 条记录
db.things.find().skip(199990).limit(2)
>>>>>>>
相关推荐
5. **数据库管理**:MySQL、Oracle、MongoDB 等数据库的使用、SQL 查询、数据备份与恢复、性能优化等内容。 6. **云计算**:AWS、Azure、Google Cloud 等主流云平台的使用,IaaS、PaaS、SaaS 概念,容器化技术如 ...
数据工程师妹子养成手记-数据库篇 《左手MongoDB,右手Redis——从入门到商业实战》背后的故事。 这篇文章没有代码,请放心阅读。 一个程序员的一生应该这样度过:当她回首往事的时候,她不会因为建造环境浪费时间而...
MOOC主页,实践路径,猴子问题,手写,登录,注册,11.11 Python 手记 - 史上最全,最详idea搭建springdata+mongoDB+maven+springmvc 史上最全,最详i
本文以“【千锋】一天学会MySQL数据库学习手记.pdf”为题,涵盖了学习MySQL所涉及的核心知识点,包括DQL、DML、DDL等,下面将详细介绍这些知识点。 DQL(数据查询语言)用于从数据库中检索数据。在学习DQL时,首先...
6. **数据库管理**:了解关系型数据库如MySQL或非关系型数据库如MongoDB的操作,包括SQL查询、索引创建、事务处理等。 7. **操作系统原理**:理解进程、线程、内存管理、文件系统等操作系统基础知识,有助于解决...
同时,恩墨也提供了多本经典电子书下载,例如《Oracle DBA手记4-数据安全警示录》、《Oracle DBA手记2》和《Oracle DBA手记1》等,这些电子书为数据库管理员提供了宝贵的知识和操作经验。 总之,通过云和恩墨等技术...
通过使用Mongoose连接MongoDB数据库,可以定义数据模型,实现与数据库的交互,执行CRUD(创建、读取、更新、删除)操作。 以上是Node.js博客项目开发的基础知识和步骤总结。开发者在开发过程中需要根据实际业务需求...
8. **连接数据库**:集成MongoDB、MySQL或其他数据库,使用ORM(对象关系映射)如Sequelize或Mongoose来操作数据库。 9. **性能优化**:了解Express的性能调优技巧,如缓存策略、减少不必要的计算和数据库查询,...
1. **敢问路在何方——项目经理成长手记.mht**:这个文件名看起来像是关于个人职业发展,特别是项目经理的角色和经历的文档。虽然不是直接与“db基础”相关,但它可能提供了一些项目管理和团队协作的经验,这对于...