`
FZtree
  • 浏览: 109686 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

MongoDB 使用手记

 
阅读更多

对于关系数据库来说,在一张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 概念,容器化技术如 ...

    MongoRedis的源代码:《左手MongoDB,右手Redis——从入门到商业实战》

    数据工程师妹子养成手记-数据库篇 《左手MongoDB,右手Redis——从入门到商业实战》背后的故事。 这篇文章没有代码,请放心阅读。 一个程序员的一生应该这样度过:当她回首往事的时候,她不会因为建造环境浪费时间而...

    MOOC主页,实践路径,猴子问题,手写,登录,注册,11.11 Python 手记 - 史

    MOOC主页,实践路径,猴子问题,手写,登录,注册,11.11 Python 手记 - 史上最全,最详idea搭建springdata+mongoDB+maven+springmvc 史上最全,最详i

    【千锋】一天学会MySQL数据库 学习手记.pdf

    本文以“【千锋】一天学会MySQL数据库学习手记.pdf”为题,涵盖了学习MySQL所涉及的核心知识点,包括DQL、DML、DDL等,下面将详细介绍这些知识点。 DQL(数据查询语言)用于从数据库中检索数据。在学习DQL时,首先...

    notes:日常开发手记

    6. **数据库管理**:了解关系型数据库如MySQL或非关系型数据库如MongoDB的操作,包括SQL查询、索引创建、事务处理等。 7. **操作系统原理**:理解进程、线程、内存管理、文件系统等操作系统基础知识,有助于解决...

    Mysql与开源技术(云和恩墨)

    同时,恩墨也提供了多本经典电子书下载,例如《Oracle DBA手记4-数据安全警示录》、《Oracle DBA手记2》和《Oracle DBA手记1》等,这些电子书为数据库管理员提供了宝贵的知识和操作经验。 总之,通过云和恩墨等技术...

    node.js博客项目开发手记

    通过使用Mongoose连接MongoDB数据库,可以定义数据模型,实现与数据库的交互,执行CRUD(创建、读取、更新、删除)操作。 以上是Node.js博客项目开发的基础知识和步骤总结。开发者在开发过程中需要根据实际业务需求...

    advanced-express-handson

    8. **连接数据库**:集成MongoDB、MySQL或其他数据库,使用ORM(对象关系映射)如Sequelize或Mongoose来操作数据库。 9. **性能优化**:了解Express的性能调优技巧,如缓存策略、减少不必要的计算和数据库查询,...

    db基础

    1. **敢问路在何方——项目经理成长手记.mht**:这个文件名看起来像是关于个人职业发展,特别是项目经理的角色和经历的文档。虽然不是直接与“db基础”相关,但它可能提供了一些项目管理和团队协作的经验,这对于...

Global site tag (gtag.js) - Google Analytics