MongoDB進階查詢[彙總]

來源:互聯網
上載者:User

因為最近測試MongoDB,也算是熟悉了MongoDB吧。MongoDB還算簡單,在短短一周我就掌握了很多內容。相對於其他資料庫這個確實容易多了。

我安裝的:

MongoDB版本為:2.0.8

系統為:64位Ubuntu 12.04

先給他家看一下我的表結構[Oh sorry, Mongo叫集合]

如你所見,我盡量的類比現實生活中的情境。這是一個人的實體,他有基本的manId, manName, 有朋友[myFriends],有喜歡的水果[fruits],而且每種水果都有喜歡的權重。

很不好的是你還看見了有個“_class”欄位? 因為我是Java開發人員, 我還喜歡用Spring,因此我選用了Spring Data Mongo的類庫[也算是架構吧,但是我不這麼覺得]。

現在有很多人Spring見的膩了也開始煩了。是的,Spring野心很大,他幾乎想要壟斷Java方面的任何事情。沒辦法我從使用Spring後就離不開他,以至於其他架構基本上都不用學。我學了Spring的很多,諸如:Spring Security/Spring Integration/Spring Batch等。。。不發明輪子的他已經提供了編程裡的很多情境,我利用那些情境解決了工作中的很多問題,也使我的工作變得很高效。從而我又時間學到它更多。Spring Data Mongo封裝了mongodb java driver,提供了和SpringJDBC/Template一致編程風格的MongoTemplate。

見:http://static.springsource.org/spring-data/data-mongodb/docs/current/api/org/springframework/data/mongodb/core/MongoTemplate.html

不說廢話了,我們直接來MongoDB吧。

  • Max 和Min

我和同事在測試Mongo時,索引還寫了不到一半,他想查詢某個欄位的最大值,結果找了半天文檔也沒找到關於max的函數。我也很納悶這是常規函數啊怎麼不提供? 後來經過翻閱資料確定Mongo確實不提供直接的max和min函數。但是可以通過間接的方式[sort 和 limit]實現這個。

要查詢最大值我們只需要把結果集按照降序排列,取第一個值就是了。

如我的例子,我想取得集合中年齡最大的人。

db.person.find({}).sort({"age" : -1}).limit(1)

相反如果想要年齡最小的人,只需要把sort中改為{“age”:1}就可以了。

當然我們使用了sort,對於小數量的文檔是沒問題的。當對於大量資料需要給age建立索引,否則這個操作很耗時。

  • 1
  • 2
  • 3
  • 下一頁

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.