mongo04---基本查询
生活随笔
收集整理的這篇文章主要介紹了
mongo04---基本查询
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
核心:
mongod: 數據庫核心進程
mongos: 查詢路由器,集群時用
mongo: 交互終端(客戶端)二進制導出導入:
mongodump:導出bson數據
mongorestore: 導入bson
bsondump: bson轉換為json
monoplog:數據導出導入
mongoexport: 導出json,csv,tsv格式
mongoimport: 導入json,csv,tsv診斷工具:
mongostats
mongotop
mongosniff 用來檢查mongo運行狀態1: 創建數據庫目錄, 如 /data/db ,
2: ./mongodb --dbpath /data/db
3: mongodb要求磁盤剩余空間>=4G,
如果不夠,可以用 --smallfiles 選項1:插入單條記錄,不指定主鍵
db.collectionName.insert({name:'lisi',age:28});
2: 插入單條記錄,指定主鍵
db.collctionName.insert({_id:3,name:'lisi',age:28});
3: 插入多條記錄
db.collctionName.insert([
{_id:4,name:'wangwu',age:60}
]);Update時可用的操作符
例:
->db.user.insert({name:'lisi',age:12,sex:'male',height:123,area:'haidian'});
->db.user.update({name:'lisi'},{$set:{area:'chaoyang'},$unset:{height:1},$inc:{age:1},$rename:{sex:'gender'}});
> db.user.find();
{ "_id" : ObjectId("51fc01c4f5de93e1f2856e33"), "age" : 13, "area" : "chaoyang", "gender" : "male", "name" : "lisi" }$setOnInsert ->相當于mysql中的列的默認值$gt:>,$gte:>=,$in=in,$lt:<,$lte:<=,$ne:!=,$nin:not in,$all:所有,$or:or,$and:and,$not:not,$nor:都不成立,$exists:某列存在,$mod:取模,$type:數據為某類型,$where,$regex:正則表達式,$inc:增長,$rename:重命名列,$setOnInsert,$set:設置字段的新值,$unset:刪除指定的列查詢表達式:
db.goods.find().count()//31
db.goods.find({goods_id:32})//goods_id=32的1: 最簡單的查詢表達式
{filed:value} ,是指查詢field列的值為value的文檔
2: $ne --- != 查詢表達式
{field:{$ne:value}}
作用--查filed列的值 不等于 value 的文檔
3: $nin --> not in
4: $all
語法: {field:{$all:[v1,v2..]}}
是指取出 field列是一個數組,且至少包含 v1,v2值
5: $exists
語法: {field:{$exists:1}}
作用: 查詢出含有field字段的文檔
6: $nor,
{$nor,[條件1,條件2]}是指 所有條件都不滿足的文檔為真返回------------------------------------------------------
db.goods.find({cat_id:{$ne:3}, //cat_id不等于3shop_price:{$gt:1000}, //shop_price大于1000shop_price:{$lte:100}}, //低于或等于market_price:{$in:[4,11]}, //4或者11goods_name:"KD876", //goods_name="KD876"$and:[{shop_price:{$gt:100}},{shop_price:{$lt:1000}}], //價格介于100--1000
},{cat_id:1, //查cat_id,goods_name列,不查_idgoods_name:1,_id:0}
)
------------------------------------------------------
1.7:取出不屬于第3欄目且不屬于第11欄目的商品($and $nin和$nor分別實現)db.goods.find({$and:[ //and是并且{cat_id:{$ne:3}}, //不等于3{cat_id:{$ne:11}} //不等于11]},{goods_name:1,cat_id:1})------------------------------------------------------
db.goods.find({goods_id:{$mod:[5,0]} //對哪個列做判斷,取模,對5取模為0}, { //取那幾列goods_id:1,goods_name:1,_id:0} )------------------------------------------------------
db.goods.find({age:{$exists:1} //有age列的json文檔,colletion的每一行就是一個bson,json列結構不一樣,}
)------------------------------------------------------db.stu.insert(name:"lily",hobby:['a','b','c'])db.stu.insert(name:"lucy",hobby:['e','b','c'])db.stu.find({hobby:{$all:['b','c']} //所指定的內容都要有}) //2條都出來db.stu.find({hobby:{$all:['q','c']} }) //沒有---------------------where要把二進制轉換為json對象---------------------------------
db.goods.find({$where:'this.cat_id ==3 && this.cat_id ==4' //用where把二進制文件轉換為一個json對象,不用where是直接二進制比較,where的效率低})db.goods.find({$where:'this.shop_price > 300 && this.shop_price < 400 || this.shop_price > 3000 && this.shop_price < 4000'})
-----------------正則表達式效率也低-------------------------------------
db.goods.find({goods_name:{$regex:/^諾基亞.*/} //諾基亞開頭的}
)------------------------------------------------------
db.goods.find({hobby:{$type:2} //查詢age列是字符串類型的,double:1,string:2,object:3,Array:4,boolean:8,date:9,null:10,})------------------------------------------------------
db.goods.find({cat_id:{$nin:[3,11]}},{goods_name:1,cat_id:1});------------------------------------------------------
db.goods.find({$nor:[ //都不成立{cat_id:3},{cat_id:11}]},{goods_name:1,cat_id:1});1.8:取出價格大于100且小于300,或者大于4000且小于5000的商品()
db.goods.find({$or: //2個or打中括號,對多列限制[{ //每一個打大括號$and:[ //2個and打中括號{shop_price:{$gt:100}}, //每一個打大括號,對一列限制{shop_price:{$lt:300}}]},{$and:[{shop_price:{$gt:4000}},{shop_price:{$lt:5000}}]}]},{goods_name:1,shop_price:1}
);1.9:取出goods_id%5 == 1, 即,1,6,11,..這樣的商品
db.goods.find({goods_id:{$mod:[5,1]}});1.10:取出有age屬性的文檔
db.stu.find({age:{$exists:1}});
含有age屬性的文檔將會被查出------------------------------------------------------
use shop
for(var i=0;i<10000;i++){db.bar.insert({_id:i++,title:'hello'+i});
} //迅速在mongo里面插入10000條數據
db.bar.find().count();
------------------------------------------------------
游標cursor分頁查詢:
通俗的說,游標不是查詢結果,而是查詢的返回資源,或者接口.
通過這個接口,你可以逐條讀取.就像php中的fopen打開文件,得到一個資源一樣, 通過資源,可以一行一行的讀文件.
</pre>
?
總結
以上是生活随笔為你收集整理的mongo04---基本查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GIt -- Window下配置 git
- 下一篇: php 与 memcache 笔记