MongoDB基本知识
1、插入
2、查看
2.1 单字段查询
2.2 复合查询
2.3 cursor 游标
2.4 限制条件 - 结果集
3、修改
4、删除
5、排序
6、存储过程
1、插入
db.collection.insert(document)
显示所有集合
show collections
2、查看
db.collection.find(criteria,projection)
参数:
criteria - 查询条件
projection - 返回的字段
2.1 单字段查询
① 相等:{ field: value}
② 比较:{ field: { op: value}}
运算符:大于($gt)
大于等于($gte)
小于($lt)
小于等于($lte)
不等于($ne)
包含于($in)
不包含于($nin)
取模($mod)
元素个数($size)
③ 数组:
完全匹配 { tags: [ 'arg1', 'arg2', 'arg3' ] }
{ tags: { $all: [ 'arg1', 'arg2']}}
单个元素匹配 { tags : 'arg1'}
特定元素匹配 { 'tags.0' : 'arg1' }
④ 子文档
{ "field.key" : value}
⑤ 存在
{ field: { $exists: true }} # true 存在 false不存在
⑥ 正则表达式
//
2.2 复合查询
① AND
{ $and: [ { field1: value1}, { field2: value2 } ] }
② OR
{ $or: [ {field1:value1}, { field2 : value2} ] }
2.3 cursor游标
1. 什么是游标(cursor)?
find命令并不直接返回结果,而是返回一个结果集的迭代器,即游标。
2. 想要获取数据,我们可以使用next方法来遍历游标,如下:
var myCursor = db.inventory.find( { type: "food" } );
var myDocument = myCursor.hasNext() ? myCursor.next() : null;
if (myDocument) {
var myItem = myDocument.item;
print(tojson(myItem));
}
3. 使用forEach方法也能实现游标的遍历,如下:
var myCursor = db.inventory.find( { type: "food" } );
myCursor.forEach(printjson);
4.可以通过使用命令cursorInfo获取以下游标信息:
打开的游标的总数;
当前客户端使用的游标大小;
自上次重新启动服务器的超时游标数量。
2.4、限制条件 - 结果集
① 文档数量
limit方法:设定返回结果集中的最大文档数量
db.collection.find().limit(Num)
skip方法:设定返回记录的起点
db.collection.find().skip(Num)
db.collection.find().count()
参数:
Num:Number类型,大于0
② 字段条件
db.collection.find(查询条件,字段条件)
参数:
字段条件:JSON对象,格式=>{字段:值}
值等于1时目标是需要返回,0表示不需要返回
2.5、Javascript 查询
f=function(){return this.field > value; }; db.collection.find(f);
3、修改
db.collection.update(query,update,{upsert:boolean,multi:boolean});
参数:
query:查询条件,文档
update:修改内容,文档
upsert(可选):如果值为true,那么当集合中没有匹配文档时,创建文档。默认false。
multi(可选):如果值为true,那么将更新全部符合条件的文档,否则仅更新一个文档,默认false。
db.collection.save();
更新或插入新文档,只能对一个文档操作。
4、删除
db.collection.remove(
query,
justOne
)
参数:
query:BSON类型,删除文档的条件
justOne:布尔类型,true:只删除一个文档,false:默认值,删除所有符合条件的文档。
5、排序
db.collection.find().sort({field:value}); 1 升序 -1 降序
6、存储过程
MongoDB 存储过程是存储在db.system.js 表中的。
db.system.js.save({_id:"addNumbers", value:function(x, y){return x + y;}});
查询存储过程:db.system.js.find()
调用:db.eval('addNumbers');
上一篇:MongoDB使用规范
下一篇:SQL考核