MongoDB的Find詳解(一)

 

1.指定返回的鍵mongodb

db.[documentName].find ({條件},{鍵指定})shell

數據準備persons.json數據庫

var persons = [{
name:"jim",
age:25,
email:"75431457@qq.com",
c:89,m:96,e:87,
country:"USA",
books:["JS","C++","EXTJS","MONGODB"]
},
{
name:"tom",
age:25,
email:"214557457@qq.com",
c:75,m:66,e:97,
country:"USA",
books:["PHP","JAVA","EXTJS","C++"]
},
{
name:"lili",
age:26,
email:"344521457@qq.com",
c:75,m:63,e:97,
country:"USA",
books:["JS","JAVA","C#","MONGODB"]
},
{
name:"zhangsan",
age:27,
email:"2145567457@qq.com",
c:89,m:86,e:67,
country:"China",
books:["JS","JAVA","EXTJS","MONGODB"]
},
{
name:"lisi",
age:26,
email:"274521457@qq.com",
c:53,m:96,e:83,
country:"China",
books:["JS","C#","PHP","MONGODB"]
},
{
name:"wangwu",
age:27,
email:"65621457@qq.com",
c:45,m:65,e:99,
country:"China",
books:["JS","JAVA","C++","MONGODB"]
},
{
name:"zhaoliu",
age:27,
email:"214521457@qq.com",
c:99,m:96,e:97,
country:"China",
books:["JS","JAVA","EXTJS","PHP"]
},
{
name:"piaoyingjun",
age:26,
email:"piaoyingjun@uspcat.com",
c:39,m:54,e:53,
country:"Korea",
books:["JS","C#","EXTJS","MONGODB"]
},
{
name:"lizhenxian",
age:27,
email:"lizhenxian@uspcat.com",
c:35,m:56,e:47,
country:"Korea",
books:["JS","JAVA","EXTJS","MONGODB"]
},
{
name:"lixiaoli",
age:21,
email:"lixiaoli@uspcat.com",
c:36,m:86,e:32,
country:"Korea",
books:["JS","JAVA","PHP","MONGODB"]
},
{
name:"zhangsuying",
age:22,
email:"zhangsuying@uspcat.com",
c:45,m:63,e:77,
country:"Korea",
books:["JS","JAVA","C#","MONGODB"]
}]
for(var i = 0;i<persons.length;i++){
db.persons.insert(persons[i])
}json

1.1 查詢出全部數據的指定鍵(name ,age ,country)數組

db.persons.find({},{name:1,age:1,country:1,_id:0})學習

2.查詢條件spa

 

2.查詢條件code

2.1查詢出年齡在25到27歲之間的學生blog

db.persons.find({age: {$gte:25,$lte:27},{_id:0,age:1})文檔

2.2查詢出全部不是韓國籍的學生的數學成績

db.persons.find({country:{$ne:」Korea」}},{_id:0,m:1})

3.包含或不包含

$in或$nin

2.3查詢國籍是中國或美國的學生信息

db.persons.find({country:{$in:[「USA」,「China」]}})

2.4查詢國籍不是中國或美國的學生信息

db.persons.find({country:{$nin:[「USA」,「China」]}})

4.OR查詢

$or

2.4查詢語文成績大於85或者英語大於90的學生信息

db.persons.find({$or:[{c:{$gte:85}},{e:{$gte:90}}]},{_id:0,c:1,e:1})

5.Null

把中國國籍的學生上增長新的鍵sex

db.person.update({country:」China」},{$set:{sex:」m」}},false,true)

2.5查詢出sex 等於 null的學生

db.persons.find({sex:{$in:[null]}},{country:1})

6.正則查詢

2.6查詢出名字中存在」li」的學生的信息

db.persons.find({name:/li/i},{_id:0,name:1})

7.$not的使用

$not能夠用到任何地方進行取反操做

2.7查詢出名字中不存在」li」的學生的信息

db.persons.find({name:{$not:/li/i}},{_id:0,name:1})

$not和$nin的區別是$not能夠用在任何地方兒$nin是用到集合上的

8.數組查詢$all和index應用

2.8查詢喜歡看MONGOD和JS的學生

db.persons.find({books:{$all:[「MONGOBD」,」JS」]}},{books:1,_id:0})

2.9查詢第二本書是JAVA的學習信息

db.persons.find({「books.1」:」JAVA」})

9.查詢指定長度數組$size它不能與比較查詢符一塊兒使用(這是弊端)

2.8查詢出喜歡的書籍數量是4本的學生

db.persons.find({books:{$size:4}},{_id:0,books:1})

2.9查詢出喜歡的書籍數量大於3本的學生

1.增長字段size

db.persons.update({},{$set:{size:4}},false,true)

2.改變書籍的更新方式,每次增長書籍的時候size增長1

db.persons.update({查詢器},{$push:{books:」ORACLE」},$inc:{size:1}})

3.利用$gt查詢

db.persons.find({size:{$gt:3}})

2.10利用shell查詢出Jim喜歡看的書的數量

var persons = db.persons.find({name:"jim"})

while(persons.hasNext()){

obj = persons.next();

print(obj.books.length)

}

1.mongodb 是NOSQL數據庫可是他在文檔查詢上仍是很強大的

2.查詢符基本是用到花括號裏面的更新符基本是在外面

3.shell是個不折不扣的JS引擎,可是一些特殊的操做要靠他的

各個驅動包來完成(JAVA,NODE.JS)

 

//查詢出年齡在25到27歲之間的學生
db.persons.find({age: {$gte:25,$lte:27}},{ "_id" : ObjectId("53ffe4a7504a4886bc371029"),age:1})

//查詢出全部不是韓國籍的學生的數學成績
db.persons.find({country: {$ne:"Korea"}},{ "_id" : ObjectId("53ffe4a7504a4886bc371029"),age:1})

//查詢國籍是中國或美國的學生信息
db.persons.find({country:{$in:["USA","China"]}})

//查詢國籍不是中國或美國的學生信息
db.persons.find({country:{$nin:["USA","China"]}})

//查詢語文成績大於85或者英語大於90的學生信息
db.persons.find({$or:[{c:{$gte:85}},{e:{$gte:90}}]},{_id:0,c:1,e:1})


//把中國國籍的學生上增長新的鍵sex
db.persons.update({country:"China"},{$set:{sex:"ms"}},false,true)

db.persons.update({country:"USA"},{$set:{set:"ms"}},true,true)

db.persons.update({country:"China"},{$set:{sex:"m"}},false,true)


db.persons.update(
{ age: 27 },
{ $set: { status: "A" } },
{ multi: true }
)


//查詢出sex 等於 null的學生
db.persons.find({sex:{$in:[null]}},{country:1})

//查詢出名字中存在」li」的學生的信息,正則查詢
db.persons.find({name:/li/i},{_id:0,name:1})
//查詢出名字中不存在」li」的學生的信息
db.persons.find({name:{$not:/li/i}},{_id:0,name:1})


//查詢喜歡看MONGOD和JS的學生
db.persons.find({books:{$all:["MONGOBD","JS"]}},{books:1,"_id" : ObjectId("53ffe4a7504a4886bc371029")})


//查詢喜歡看MONGOD和JS的學生
db.persons.find({"books.1":"JAVA"})


//查詢出喜歡的書籍數量是4本的學生
db.persons.find({books:{$size:4}},{_id:0,books:1})


//增長字段size
db.persons.update({},{$set:{size:4}},false,true)



db.persons.update({name:"tom"},{$push:{books:"ORACLE"},$inc:{size:1}})

//利用$gt查詢
db.persons.find({size:{$gt:4}})


//利用shell查詢出Jim喜歡看的書的數量

var persons = db.persons.find({name:"jim"})
while(persons.hasNext()){
obj = persons.next();
print(obj.books.length)
}

聲明:本博客高度重視知識產權保護,發現本博客發佈的信息包含有侵犯其著做權的連接內容時,請聯繫我,我將第一時間作相應處理,聯繫郵箱ffgign@qq.com。


做者:Mark Fan (小念頭)    來源:http://cube.cnblogs.com
說明:未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。若有疑問,能夠經過 ffgign@qq.com 聯繫做者,本文章採用 知識共享署名-非商業性使用-相同方式共享 2.5 中國大陸許可協議進行許可

知識共享許可協議

相關文章
相關標籤/搜索