前面我們簡單的講了下find方法,下面來深入的過一下它的用法以及常用的字方法。
下面是mongo中db.user.help()中對find方法的定義和解釋:
db.user.find([query],[fields]) - query is an optional query filter. fields is optional set of fields to return. e.g. db.user.find( {x:77} , {name:1, x:1} )
其中fields參數的意圖是要顯示/不顯示的字段列表,不賦值則返回全部字段(_id字段默認返回)。
其中key:flag(0/1)中flag==1表示該字段返回,除了_id字段外,指定的其他字段的flag值必須都一樣
例:
/** 查找age==28的記錄的_id,name,sex **/ db.user.find({age:28},{name:1,sex:1})
/** 該查詢會報錯,因為age必須為1,為0的話其實就不需要寫 **/ db.user.find({age:28},{name:1,sex:1,age:0})
/** 查找age==28的記錄的name和sex,_id字段不需要返回 **/ db.user.find({age:28},{name:1,sex:1,_id:0})
在數據庫的where查詢中的比較操作符常用有如下2類:
①: >, >=, <, <=, !=, =。
②:and,or,in,not in
在mongodb中也提供了對這些常用操作符的支持,
1、"$gt", "$gte", "$lt", "$lte", "$ne"對應了>, >=, <, <=, !=,上面的=沒有特殊關鍵字,直接使用key:value即可。
2、 "$or", "$in","$nin"對應了or,in,not in,上面的and沒有特殊關鍵字,直接使用逗號分隔的就是and。
/** 查詢age>30的用戶 **/ db.user.find({age:{$gt:30}})
/** 查詢age<15的用戶 **/ db.user.find({age:{$lt:15}})
/** 查詢name in ("haha","hehe","jingli")的用戶 **/ db.user.find({name:{$in:["haha","hehe","jingli"]}})
/** 查詢 name in ("haha","hehe","jingli") and (age<15 or age>30)的用戶 **/ db.user.find({name:{$in:["haha","hehe","jingli"]},$or:[{age:{$lt:15}},{age:{$gt:30}}]})
3、使用正則表達式查詢
/** 查詢名字以h開頭的用戶 **/ db.user.find({name:/^h/})
4、使用$where來自定義JS的Function來匹配
/** 查詢age>30 || age<10的用戶 **/ db.user.find({$where:function(){return this.age>30 || this.age<10}})