狼愛上貍

          我胡漢三又回來了

          mongo常用操作

          shell#查詢
          查詢 name = "bruce" 的數據
          db.users.find({ name : "bruce" });

          條件操作符
          $gt : >
          $lt : <
          $gte: >=
          $lte: <=
          $ne : !=、<>
          $in : in
          $nin: not in
          $all: all
          $not: 反匹配(1.3.3及以上版本)

          查詢 name <> "bruce" and age >= 18 的數據
          db.users.find({name: {$ne: "bruce"}, age: {$gte: 18}});

          查詢 creation_date > '2010-01-01' and creation_date <= '2010-12-31' 的數據
          db.users.find({creation_date:{$gt:new Date(2010,0,1), $lte:new Date(2010,11,31)});

          查詢 age in (20,22,24,26) 的數據
          db.users.find({age: {$in: [20,22,24,26]}});

          查詢 age取模10等于0 的數據
          db.users.find('this.age % 10 == 0');
          或者
          db.users.find({age : {$mod : [10, 0]}});

          匹配所有
          db.users.find({favorite_number : {$all : [6, 8]}});
          可以查詢出{name: 'David', age: 26, favorite_number: [ 6, 8, 9 ] }
          可以不查詢出{name: 'David', age: 26, favorite_number: [ 6, 7, 9 ] }

          查詢不匹配name=B*帶頭的記錄
          db.users.find({name: {$not: /^B.*/}});
          查詢 age取模10不等于0 的數據
          db.users.find({age : {$not: {$mod : [10, 0]}}});

          #返回部分字段
          選擇返回age和_id字段(_id字段總是會被返回)
          db.users.find({}, {age:1});
          db.users.find({}, {age:3});
          db.users.find({}, {age:true});
          db.users.find({ name : "bruce" }, {age:1});
          0為false, 非0為true

          選擇返回age、address和_id字段
          db.users.find({ name : "bruce" }, {age:1, address:1});

          排除返回age、address和_id字段
          db.users.find({}, {age:0, address:false});
          db.users.find({ name : "bruce" }, {age:0, address:false});

          數組元素個數判斷
          對于{name: 'David', age: 26, favorite_number: [ 6, 7, 9 ] }記錄
          匹配db.users.find({favorite_number: {$size: 3}});
          不匹配db.users.find({favorite_number: {$size: 2}});

          $exists判斷字段是否存在
          查詢所有存在name字段的記錄
          db.users.find({name: {$exists: true}});
          查詢所有不存在phone字段的記錄
          db.users.find({phone: {$exists: false}});

          $type判斷字段類型
          查詢所有name字段是字符類型的
          db.users.find({name: {$type: 2}});
          查詢所有age字段是整型的
          db.users.find({age: {$type: 16}});

          對于字符字段,可以使用正則表達式
          查詢以字母b或者B帶頭的所有記錄
          db.users.find({name: /^b.*/i});

          $elemMatch(1.3.1及以上版本)
          為數組的字段中匹配其中某個元素

          Javascript查詢和$where查詢
          查詢 age > 18 的記錄,以下查詢都一樣
          db.users.find({age: {$gt: 18}});
          db.users.find({$where: "this.age > 18"});
          db.users.find("this.age > 18");
          f = function() {return this.age > 18} db.users.find(f);

          排序sort()
          以年齡升序asc
          db.users.find().sort({age: 1});
          以年齡降序desc
          db.users.find().sort({age: -1});

          限制返回記錄數量limit()
          返回5條記錄
          db.users.find().limit(5);
          返回3條記錄并打印信息
          db.users.find().limit(3).forEach(function(user) {print('my age is ' + user.age)});
          結果
          my age is 18
          my age is 19
          my age is 20

          限制返回記錄的開始點skip()
          從第3條記錄開始,返回5條記錄(limit 3, 5)
          db.users.find().skip(3).limit(5);

          查詢記錄條數count()
          db.users.find().count();
          db.users.find({age:18}).count();
          以下返回的不是5,而是user表中所有的記錄數量
          db.users.find().skip(10).limit(5).count();
          如果要返回限制之后的記錄數量,要使用count(true)或者count(非0)
          db.users.find().skip(10).limit(5).count(true);

          分組group()
          假設test表只有以下一條數據
          { domain: "www.mongodb.org"
          , invoked_at: {d:"2009-11-03", t:"17:14:05"}
          , response_time: 0.05
          , http_action: "GET /display/DOCS/Aggregation"
          }
          使用group統計test表11月份的數據count:count(*)、total_time:sum(response_time)、 avg_time:total_time/count;
          db.test.group(
             { cond: {"invoked_at.d": {$gt: "2009-11", $lt: "2009-12"}}
             , key: {http_action: true}
             , initial: {count: 0, total_time:0}
             , reduce: function(doc, out){ out.count++; out.total_time+=doc.response_time }
             , finalize: function(out){ out.avg_time = out.total_time / out.count }
             } );

          [
            {
              "http_action" : "GET /display/DOCS/Aggregation",
              "count" : 1,
              "total_time" : 0.05,
              "avg_time" : 0.05
            }
          ]

          來自: http://hi.baidu.com/asminfo/blog/item/20301e22dcfcce50ac34de7a.html

          posted on 2011-03-23 10:26 狼愛上貍 閱讀(1075) 評論(0)  編輯  收藏 所屬分類: Mongo

          主站蜘蛛池模板: 黄大仙区| 石棉县| 嘉荫县| 体育| 南投县| 景泰县| 石林| 黄冈市| 大石桥市| 惠水县| 大兴区| 太和县| 晋宁县| 马关县| 昌宁县| 称多县| 北京市| 达拉特旗| 新巴尔虎左旗| 哈尔滨市| 鄂托克前旗| 乌拉特后旗| 冀州市| 屏东县| 凤翔县| 岑溪市| 仁化县| 芦溪县| 前郭尔| 汕头市| 沭阳县| 永仁县| 乌审旗| 桑日县| 西乌珠穆沁旗| 上蔡县| 平山县| 华安县| 禄丰县| 镇原县| 左云县|