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)

>>>>>>>

猜你喜欢

转载自fztree.iteye.com/blog/2112045