2012-04-01 35 views
1

想象我有一個這樣的文件:如何查詢內部文檔?

post = {title: "a", comments: [{hour: "08:00", "text": "abc"}, {hour: "09:00", "text": "def"}]} 

現在我可能有大約1000職位,各有100條評論,這意味着我們有大約10萬的意見,

  • ,但我怎麼可能會發現這是評論最常用的小時?
  • 甚至可以保留100個或1000個註釋,例如?
  • 獲取所有用戶的評論?我可能在用戶文檔上使用comments = [...]創建一個數組?
  • 我看到他們沒有_key屬性,但我想用一個,有可能沒有實現我自己的關鍵gen系統?
  • 可以收集評論並保留在那裏也可以

另一個例子是:

article = {code: "X900123", quantity: 24, movementsHistory: [{date:20120101, quantity: 3}, {date:20120102, quantity: 5}]} 

這到底是怎麼進行,如果我想對20120101說是目前股市的大於25%所做的所有文章所有的動作? - 在mysql中,我將有一個用於文章和動作的表格,然後每個動作鏈接到文章。因此,我可以加入文章和動作並獲得結果。 (所有的文章,而不是逐個)

感謝您的幫助(:?

回答

3

好了,很多問題在這裏

  1. 使用MapReduce
  2. 100最常見的意見是,這是可能的,使用MapReduce
  3. 您可以將註釋複製到用戶文檔中,是的,或者您可以使用MapReduce
  4. 無需製作您自己的id生成器所有官方驅動程序支持c新ObjectIds的調整(在客戶端上,不需要聯繫服務器)。
  5. 這是最合理的解決方案,因爲您想將評論視爲第一類實體,而不是嵌入式實體。你不應該嵌入一流的實體,它會讓事情變得更加困難。如果註釋擁有自己的集合,那麼您可以運行更多的可能查詢。這裏的more information"embed vs. link"上。

你的第二個例子我真的不明白。