首先,先通过以下函数向BookList集合中插入10000条数据
function insertN(obj,n){
var i=0;
while(i<n){
obj.insert({id:i,name:"bookNumber"+i,publishTime:i+2000})
i++;
}
}
var BookList=db.getCollection("BookList")
调用函数,这样,BookList中就有10000条数据了
通过命令db.[documentName].find({条件},{键指定})来查询具有特定特征的数据,键指定可用于指定什么键显示想、什么键不显示。例如:{id:0,name:1,publishTime:1}表示id键内容不显示,name与publishTime内容显示。
一,比较操作符查询
$lt (less than) | < |
$lte (less than equal) | <= |
$gt (greater than) | > |
$gte (greater than equal) | >= |
$ne (not equal) | != |
我们可以运用比较操作符来查询出出版日期publishTime在2010年至2016年的书,并且不显示id,那么我们可以用一下语句进行查询
db.BookList.find({publishTime:{$gte:2010,$lte:2016}},{_id:0,name:1,publishTime:1})
其他比较符可用类似方法组合使用。
二,$in与$nin包含与不包含
$in与$nin的用法是根据特定的键值。
命令格式db.[documentName].find({filed:{$in:[value1,value2,...]}}),运用该命令就可以查询出键filed中包含value1或value2,...等的数据,是一个或关系,只要包含有一个相同的value就符合查找条件。
命令格式db.[documentName].find({filed:{$nin:[value1,value2,...]}}),运用该命令就可以查询出键filed中不包含value1或value2,...等的数据。
三,$or或查询
命令格式db.[documentName].find({$or:[{条件},{条件},...]}),注意中括号与花括号的区别,例如我们要查询id小于30,出版日期publishTime介于2000-2010年的数据,我们就可以用命令:
db.BookList.find({$or:[{id:{$lt:30}},{publishTime:{$gte:200,$lte:2010}}]},{_id:0,name:1,publishTime:1})
四,Null关键字
Null关键字可用于查询集合中哪些数据不包含某些键,命令格式db.[documentName].find({filed:null})
五,正则表达式查询
命令格式db.[documentName].find({filed:正则表达式}),由于我对于JS的正则表达式不是太了解,我就不尝试了( ̄o ̄) .
六,$not取反
该指令可将任何查询条件取反,类似于查询publishTime大于2016年的,通过$not取反可取到publishTime小于等于2016年的,一下为指令变换:
db.BookList.find({publishTime:{$gt:2016}}) 取反 db.BookList.find({publishTime:{$not:{$gt:2016}}})