• 初识mongo


    进入mongo

    /usr/local/mongodb/bin/mongo --host 10.1.1.111:27017

    查看所有db

    show dbs

    查看当前进入的db

    db          

    查看当前db的所有collection

    show collections

    创建collection(table)

    db.createCollection("myindex", {size:200,capped:true,max:1000})

    删除collection

    db.mytable.drop();

     新增一条记录

    db.myindex.insert({'uid':1,'username':'admin'})

    查看

    http://docs.mongodb.org/manual/reference/method/db.collection.find/

    http://docs.mongodb.org/manual/tutorial/query-documents/

    http://www.cnblogs.com/TankMa/archive/2011/06/08/2074947.html

    http://codefather.pl/post/1369797147/nosql-no-problem-norm-and-mongodb-tutorial

    原型find($where, $field)
    $where表示条件
    $field表示选择哪些字段
    返回值是cursor,中文翻译为游标

    查看所有的条目
    db.myindex.find()
    根据条件查询:
    db.storage_soft.find({'soft_id':2});
    根据条件查询只选择某些字段:
    db.storage_soft.find({'soft_id':2}, {'soft_download_times':1});

    skip && limit
    查询第1条记录:
    db.storage_soft.find().limit(1);
    查询前N条记录:
    db.storage_soft.find().limit(N);
    skip:查询soft_id大于2的情况下,跳过前10个,取第10+1,到10+N个,相当于limit 10,1

    > db.storage_soft.find({'soft_id':{'$gt':2}},{'soft_id':1}).skip(10).limit(1);
    { "_id" : ObjectId("534f674d0114e67f4d000322"), "soft_id" : 20 }


    sort函数
    降序:
    db.storage_soft.find({},{'soft_id':1}).sort({soft_id:-1}).limit(1);
    升序:
    db.storage_soft.find({},{'soft_id':1}).sort({soft_id:1}).limit(1);

    distinct

    > db.storage_soft.runCommand({'distinct':'storage_soft', 'key':'soft_status',query:{'soft_id':{'$gt':0,'$lt':10}}});
    {
    "values" : [
    1
    ],
    "stats" : {
    "n" : 7,
    "nscanned" : 25297,
    "nscannedObjects" : 25297,
    "timems" : 123,
    "cursor" : "BasicCursor"
    },
    "ok" : 1
    }

    http://docs.mongodb.org/manual/reference/command/distinct/

    关于find的where条件

    相等:db.storage_soft.find({'soft_id':1},{'soft_id':1});
    大于:{'soft_id':{'$gt':1}}
    db.storage_soft.findOne({'soft_id':{'$gt':1}},{'soft_id':1});
    小于:{'soft_id':{'$lt':10}}
    db.storage_soft.findOne({'soft_id':{'$lt':10}},{'soft_id':1});
    大于等于:{'soft_id':{'$gte':1}}
    小于等于:{'soft_id':{'$lte':10}}

    $ne:不等
    {'soft_id':{'$ne':1}
    $eq:没有这个操作
    > db.storage_soft.find({'soft_id':{'$eq':1}}).limit(1);
    error: { "$err" : "invalid operator: $eq", "code" : 10068 }
    $in: 软件id为in列表中的其中一个值
    {'soft_id':{'$in':[1,2,3]}}
    错误:{'soft_id':{'$in':1}}
    $nin: 软件id均不等于in列表中的任何一个值
    {'soft_id':{'$in':[1,2,3]}}
    $all: 几个条件必须同时满足
    db.storage_soft.find({'soft_prev_baoku_subcate_id':{'$all':['173','172']}},{'soft_id':1}).count();
    http://docs.mongodb.org/manual/reference/operator/query/all/

    $exists: 某个字段是存在的
    如果某条记录上的soft_prev_baoku_subcate_id的值是null,那么用$exists:true查询,这条记录是符合条件的
    某条记录上的soft_prev_baoku_subcate_id这个字段不存在,用$exists:true查询,这条记录不满足条件,也不会被查到
    db.storage_soft.find({'soft_prev_baoku_subcate_id':{'$exists':true}},{'soft_id':1}).count();
    http://docs.mongodb.org/manual/reference/operator/query/exists/

    多个查询条件
    或:软件id或者为1,或者为10
    {'$or':[{'soft_id':1},{'soft_id':10}]}
    且:软件id为1,并且为10
    {'$and':[{'soft_id':1},{'soft_id':10}]}

    且:软件id大于1,并且小于5
    > db.storage_soft.find({'$and':[{'soft_id':{'$gt':1}},{'soft_id':{'$lt':5}}]},{'soft_id':1});

    { "_id" : ObjectId("534f674b0114e67f4d000121"), "soft_id" : 2 }
    { "_id" : ObjectId("534f674c0114e67f4d00015b"), "soft_id" : 3 }
    { "_id" : ObjectId("534f674c0114e67f4d000166"), "soft_id" : 4 }

      且,且:软件id大于1,并且软件id小于5,并且软件状态为1

    > db.storage_soft.find({'$and':[{'soft_id':{'$gt':1}},{'soft_id':{'$lt':5}},{'soft_status':1}]},{'soft_id':1,'soft_status':1});
    { "_id" : ObjectId("534f674b0114e67f4d000121"), "soft_id" : 2, "soft_status" : 1 }
    { "_id" : ObjectId("534f674c0114e67f4d00015b"), "soft_id" : 3, "soft_status" : 1 }
    { "_id" : ObjectId("534f674c0114e67f4d000166"), "soft_id" : 4, "soft_status" : 1 }

      

      $regex 正则匹配:软件名中带有“abc”的软件

      db.storage_soft.find({'soft_name':{'$regex':'test'}},{'soft_id':1}).count();

      正则匹配:软件名中带有“abc”,但不区分大小写

      db.storage_soft.find({'soft_name':/test/i},{'soft_id':1}).count();

      i模式表示大小写不敏感。

      正则匹配:软件名中带有“abc”,但需区分大小写

      db.storage_soft.find({'soft_name':/test/},{'soft_id':1}).count();

      http://docs.mongodb.org/manual/reference/operator/query/regex/

    子字段subfield:edition_plugin字段的flag字段为'2'

    db.storage_soft_edition.findOne({'edition_plugin.flag':'2'});

      某个字段中可以存多个值,其中一个值命中了,就被选出来

      db.storage_soft.find({'soft_prev_baoku_subcate_id':{'$in':['172']}},{'soft_id':1}).count();

    > db.storage_soft.find({'soft_prev_baoku_subcate_id':{'$in':['172']}},{'soft_id':1,'soft_prev_baoku_subcate_id':1});
    { "_id" : ObjectId("534f674a0114e67f4d000000"), "soft_id" : NumberLong(1), "soft_prev_baoku_subcate_id" : [ "172" ] }
    { "_id" : ObjectId("534f674b0114e67f4d000121"), "soft_id" : 2, "soft_prev_baoku_subcate_id" : [ "172", "173" ] }

      某个字段只有一个值,但我给出多个值,只要这个字段和其中的一个值相等,就被选出来

    > db.storage_soft.find({'soft_id':{'$in':[1,2,3]}},{'soft_id':1});
    { "_id" : ObjectId("534f674a0114e67f4d000000"), "soft_id" : NumberLong(1) }
    { "_id" : ObjectId("534f674b0114e67f4d000121"), "soft_id" : 2 }
    { "_id" : ObjectId("534f674c0114e67f4d00015b"), "soft_id" : 3 }

     更新记录

    http://docs.mongodb.org/manual/reference/method/db.collection.update/

    db.myindex.update({'username':'admin'},{'$set':{'uid':2}},false)
    db.collection.update(
       <query>,
       <update>,
       {
         upsert: <boolean> = false,
         multi: <boolean> = false,
         writeConcern: <document>
       }
    )
    db.storage_soft_cate.update({cate_id:191}, {$set:{cate_id:167}})
    db.storage_soft_cate.find({'cate_id':167});
    db.storage_soft_cate.find({"_id":"534f69260114e67f4d01f456"})

    db.storage_soft.update({'_id':ObjectId('534f674b0114e67f4d000121')}, {'$set':{'soft_download_times':1}}, false);
    db.storage_soft.find({'_id':ObjectId('534f674a0114e67f4d000000')});

    删除记录 

    db.myindex.remove({'uid':2},true)
    db.collection.remove(
       <query>,
       <justOne>
    )
    can't remove from a capped collection

    查看当前table的collection条目数

    db.myindex.count()

    创建索引

    > db.myindex.ensureIndex({'uid':1})

    查看索引

    > db.myindex.getIndexes();
    [
        {
            "v" : 1,
            "key" : {
                "_id" : 1
            },
            "ns" : "test_2.myindex",
            "name" : "_id_"
        },
        {
            "v" : 1,
            "key" : {
                "uid" : 1
            },
            "ns" : "test_2.myindex",
            "name" : "uid_1"
        },
        {
            "v" : 1,
            "key" : {
                "uid" : -1
            },
            "ns" : "test_2.myindex",
            "name" : "uid_-1"
        }

    走索引

    > db.myindex.find({'uid':1}).explain()
    {
        "cursor" : "BtreeCursor uid_1",
        "isMultiKey" : false,
        "n" : 0,
        "nscannedObjects" : 0,
        "nscanned" : 0,
        "nscannedObjectsAllPlans" : 0,
        "nscannedAllPlans" : 0,
        "scanAndOrder" : false,
        "indexOnly" : false,
        "nYields" : 0,
        "nChunkSkips" : 0,
        "millis" : 0,
        "indexBounds" : {
            "uid" : [
                [
                    1,
                    1
                ]
            ]
        },
        "server" : "corp:2"
    }

    不走索引

    > db.myindex.find({'username':1}).explain()
    {
        "cursor" : "ForwardCappedCursor",
        "isMultiKey" : false,
        "n" : 0,
        "nscannedObjects" : 4,
        "nscanned" : 4,
        "nscannedObjectsAllPlans" : 4,
        "nscannedAllPlans" : 4,
        "scanAndOrder" : false,
        "indexOnly" : false,
        "nYields" : 0,
        "nChunkSkips" : 0,
        "millis" : 0,
        "indexBounds" : {
            
        },
        "server" : "fet:2"
    }

     按条件查询操作

    相等

    > db.myindex.find({'uid':2})
    { "_id" : ObjectId("525fc1d78a7af6409b333a4a"), "uid" : 2, "username" : "admin" }
    { "_id" : ObjectId("525fc1ec8a7af6409b333a4b"), "uid" : 2, "username" : "admin" }
    { "_id" : ObjectId("525fcab28a7af6409b333a4c"), "uid" : 2, "username" : "admin2" }

    大于

    > db.myindex.find({'uid': {$gt: 2}} )
    { "_id" : ObjectId("525fcac28a7af6409b333a4d"), "uid" : 3, "username" : "admin3" }

    多个条件与

    > db.myindex.find({'uid': {$gt: 2}, 'username':'admin3'} )
    { "_id" : ObjectId("525fcac28a7af6409b333a4d"), "uid" : 3, "username" : "admin3" }

    查看所有元素

    > db.myindex.find()
    { "_id" : ObjectId("525fc1d78a7af6409b333a4a"), "uid" : 2, "username" : "admin" }
    { "_id" : ObjectId("525fc1ec8a7af6409b333a4b"), "uid" : 2, "username" : "admin" }
    { "_id" : ObjectId("525fcab28a7af6409b333a4c"), "uid" : 2, "username" : "admin2" }
    { "_id" : ObjectId("525fcac28a7af6409b333a4d"), "uid" : 3, "username" : "admin3" }

     in操作

    > db.myindex.find({'uid':{$in:[2,3]}})
    { "_id" : ObjectId("525fc1d78a7af6409b333a4a"), "uid" : 2, "username" : "admin" }
    { "_id" : ObjectId("525fc1ec8a7af6409b333a4b"), "uid" : 2, "username" : "admin" }
    { "_id" : ObjectId("525fcab28a7af6409b333a4c"), "uid" : 2, "username" : "admin2" }
    { "_id" : ObjectId("525fcac28a7af6409b333a4d"), "uid" : 3, "username" : "admin3" }

     range操作

    > db.myindex.find({'uid':{$gt:2,$lt:4}})
    { "_id" : ObjectId("525fcac28a7af6409b333a4d"), "uid" : 3, "username" : "admin3" }

    or操作

    > db.myindex.find({'$or':[{'username':'admin2'},{'username':'admin3'}]})
    { "_id" : ObjectId("525fcab28a7af6409b333a4c"), "uid" : 2, "username" : "admin2" }
    { "_id" : ObjectId("525fcac28a7af6409b333a4d"), "uid" : 3, "username" : "admin3" }

     删除操作 remove

    db.storage_soft.remove({soft_id:{"$gt":12000}})
  • 相关阅读:
    linux学习笔记--20150122
    破解LR11 sentinel stage failed
    Linux部署环境初学(Resin、jdk)
    MongoDB操作
    TestNG
    在iOS8 下用Swift 创建自定义的键盘
    iOS 8下简单,可交互式的通知
    设计模式:策略模式
    用Swift创建一个自定义,可调整的控件
    iOS7状态栏上有趣的渐变遮罩
  • 原文地址:https://www.cnblogs.com/helww/p/3374741.html
Copyright © 2020-2023  润新知