连接数据库
/Apps/mongo/bin/mongo
插入记录
j={name:”mongo”};
t={x:3};
db.things.save(j);
db.things.save(t);
查询数据
Var cursor=db.thingsfind();
While(cursor.hasNext()) printjson(cursor.next());
Printjson(cursor[4])显示第4行数据
Var arr = db.things.find().toArray();
Arr[5] 显示第5行数据
条件查询
db.things.find({name:”mongo”}).forEach(printjson);
===select * from table where name =”mongo”
Db.things.find({x:4},{j:true}).forEach(printjson);
===查找x=4的j元素的记录
Printjson(db.things.findone({name:”mongo”}));
====查找满足条件的数据中的第一条
Limit显示结果集数量
Db.things.find().limit(3);
修改记录
Db.things.update({name:”mongo”},{$set:{name:”mongo_new”}});
将name为mongo的记录的name改为mongo_new
删除记录
Db.things.remove({name:”mongo_new”});
高级查询
条件操作符
Db.collection.find({“field”:{$gt:value}});
Field>value
$lt < || $gte >= || $lte <=
$all
Db.users.find({age:{$all:[6,8]}});
//必须满足all中所有的条件
$exists
Db.users.find({age:{$exists:true}});
//查询所有存在age字段的记录
Db.users.find({age:{$exists:false}});
//查询所有不存在age字段的记录
Null值处理
Db.c2.find({age:null})//查询出所有age为null,或者不存在age字段的记录
Db.c2.find(age:{“$in”:[null],”$exists”:true})//查询所有age字段存在,值为null的记录
$mod取模运算(取余数)
Db.student.find({age:{$mod:[10,1]}})
$ne 不等于
Db.things.find({x:{$ne:3}});
$in 包含
Db.things.find({x:{$in:[2,4,6]}});
$nin 不包含
Db.things.find({x:{$nin:[2,4,6]}});
$size
Db.things.find({x:{$size:3}})//x字段数据有3个值的记录
正则表达式匹配
Db.users.find({name:{$not:/^b.*/}});
Javascript查询和$where查询
Db.c1.find({a:{$gt:3}}) || db.c1.find({$where:”this.a>3”}); ||db.c1.find(“this.a>3”); ||
f =function(){return this.a>3;} db.c1.find(f);
count查询记录条数
db.users.find().count();
//返回 限制之后的记录数量,使用count(true)
Db.users.find().skip(10).limit(5).count(true);
Skip限制返回记录的起点
Db.users.find().skip(3).limit(5);//从第3条记录开始,返回5条记录
Sort排序
//以年龄升序
Db.users.find().sort({age:1});
//以年龄降序
Db.users.find().sort({age:-1});
游标
For(var c = db.t3.find();c.hasnext();){
Printjson(c.next());
}
Db.t3.find().forEach(function(u){printjson(u);});
存储过程
MongoDB存储过程是存储在db.system.js表中的
创建存储过程
Db.system.js.save({_id:”addNumbers”,value:function(x,y){returnx+y;}});
查看存储过程
Db.system.js.find();
调用存储过程
Db.eval(‘addNumbers(3,4.2)’);
//db.eval(function(){return 3+3});
Capped collection(不太明白,后续)
//常见用处 logging cache auto archiving
GridFS
将大型文件存储在mongoDB数据库中的文件规范
为什么要用GridFS
由于MongoDB中BSON对象大小是有限制的,所以GridFS 规范提供了一种透明的机制,可以将一个大文件分割成为多个较小的文档,这样的机制允许我们有效的保存大文件对象,特别对于那些巨大的文件,比如视频、高清图片等
MapReduce 类似于group by
参考百度文库 MongoDB权威指南中文版(前50页)
http://wenku.baidu.com/link?url=6_jTO5rY6AdYSzdpLLv9466bNezHlp9DFtObCSt8vo70gIC1zHbSN5ZfL1-xX9Z7jO6WFwLML9LGBj4Tf4faifdihh3xG5Se2cpL96hf9zG&pn=51