mongodb的常用操作(二)

时间:2023-03-08 17:14:48

继续mongodb的学习:

9.mongodb条件查询

假设有user集合,里面结构如下:
{ "_id" : ObjectId("52ab35d281181f85326409da"), "uname" : "jiangwang", "pwd" : 1
23456, "age" : 111 }
{ "_id" : ObjectId("52ab35d281181f85326409db"), "uname" : "jiangwang", "pwd" : 1
23456, "age" : 12 }
{ "_id" : ObjectId("52ab35d281181f85326409dc"), "uname" : "jiangwang", "pwd" : 1
23456, "age" : 24}
{ "_id" : ObjectId("52ab35d281181f85326409dd"), "uname" : "jiangwang", "pwd" : 1
23456, "age" : 111 }
{ "_id" : ObjectId("52ab35d281181f85326409de"), "uname" : "jiangwang", "pwd" : 1
23456, "age" : 112 }
{ "_id" : ObjectId("52ab35d281181f85326409de"), "uname" : "jiangwang", "pwd" : 1
23456, "age" : null }
{ "_id" : ObjectId("52ab35d281181f85326409de"), "uname" : "jiangwang", "pwd" : 1
23456 }

db.user.find({age:24}); //查找test集合中age等于24的行
db.user.find({age:{$lt:30,$gt:20}}); //查找test集合中age字段20到30之间的行
db.user.find({age:{$ne:24}}; //查找user集合中age不等于24的行

$lt表示litter than,小于
$gt表示greater than,大于
$lte表示litter than or equal, 小于等于
$gte表示greater than or equal,大于等于
$ne表示not equal, 不等于

db.user.find({age:{$exists:true}}); //查找存在age的行
db.user.find({age:{$ne:24,$exists:true}}); //查找age存在并且不等于24的行

db.user.find({age:null}); //查找age不存在或者为null的行
db.user.find({age:{$in:[null],$exists:true}}); //查找age存在并且为null的行

$in表示包含
db.user.find({age:{$in:[24,112]}}); //查找age在24或112的值

db.user.find({age:{$nin:[24,112]}}); //查找age除24,112以外的值

$nin表示不在范围中

//正则表达式查询, 正则表达式以/.../格式
db.user.find({name:/jiang.*/}); //查找name以jiang开头的行
db.user.find({name:{$not:/jiang.*/}}); //查找name不以jiang开头的行

db.user.count(); //统计行数
db.user.skip(1).limit(1); //跳过第一条,从第二条开始显示一行

db.user.find().sort({age:1});//按照年龄升序排列
db.user.find().sort({age:-1});//按照年龄降序排列

10.mongodb的存储过程
mongodb也提供了存储过程,使用js写,需要保存到system.js集合中
例如,将下面这个求和的js函数做成一个存储过程:
function add(x,y){
return x+y;
}

//保存mongodb的存储过程
db.system.js.save({_id:"add",value:function(x,y){return x+y;}});
//利用存储过程计算结果
db.eval('add(1,2)');

//也可以直接写函数
db.eval(function() {return 1+1;});