1. 程式人生 > >MongoDB查詢語句理解

MongoDB查詢語句理解

今天在學MongoDB的時候發現有種查詢語句不是很明白,於是我試著改變一些引數什麼的,來看看到底有什麼玄機,經過測試,終於理解是什麼意思了。

下面我把我遇到的查詢語句貼出來:

> db.col.find({},{"title":1,_id:0}).limit(2)

    {"title":"PHP 教程"}

    {"title":"Java 教程"}

>

當然,我們還需要看一下資料庫中完整的資料資訊

{"_id":ObjectId("56066542ade2f21f36b0313a"),"title":"PHP 教程","description":"PHP 是一種建立動態互動性站點的強有力的伺服器端指令碼語言。"

,"by":"菜鳥教程","url":"http://www.runoob.com","tags":["php"],"likes":200}

{"_id":ObjectId("56066549ade2f21f36b0313b"),"title":"Java 教程","description":"Java 是由Sun Microsystems公司於1995年5月推出的高階程式設計語言。","by":"菜鳥教程","url":"http://www.runoob.com","tags":["java"],"likes":150}

{"_id":ObjectId("5606654fade2f21f36b0313c"),

"title":"MongoDB 教程","description":"MongoDB 是一個 Nosql 資料庫","by":"菜鳥教程","url":"http://www.runoob.com","tags":["mongodb"],"likes":100}

那麼,db.col.find({},{"title":1,_id:0}).limit(2)為什麼會查詢出那種結果呢?

db.col.find({},{title:1,_id:0}).limit(2)  第一個大括號的意思是,要把查詢出來的結果以Bson的形式展現出來

db.col.find({},{title:1,_id:0}).limit(2)  第二個大括號的意思是,我們要查詢的欄位有哪些,屬性後面的1或者0代表的意思是查詢和不查詢的意思,title:1表示要查詢這個欄位,title:0表示部查詢該欄位,那麼可能你會好奇,既然不想查詢_id的值,幹嘛要多此一舉的寫句_id:0吧?經過我的實驗,原因是這樣的,在查詢的時候,如果只寫title:1,那麼會預設的把_id也查詢出來,為了過濾掉_id欄位,我們需要加上_id:0。當然了,如果你還想查詢更多的欄位就在第二個{}裡面加就可以了,比如{title:1,_id:0,url:1},這樣查詢出來的結果如下:

{ "title" : "PHP 教程", "url" : "http://www.runoob.com" }
{ "title" : "Java教程", "url" : "http://www.runoob.com" }

另外,limit(2)代表的是僅查詢前2條記錄。
經過上面的分析,是不是豁然開朗了呢?