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方法来遍历游标,如下:
    1. var myCursor = db.inventory.find( { type: "food" } );

    2. var myDocument = myCursor.hasNext() ? myCursor.next() : null;

    3.  

    4. if (myDocument) {

    5.    var myItem = myDocument.item;

    6.    print(tojson(myItem));

    7. }

        3. 使用forEach方法也能实现游标的遍历,如下:
    1. var myCursor =  db.inventory.find( { type: "food" } );

    2. 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考核