2012-09-21 89 views
2

我有一個monogoDB其中包含以下結構數據:本地查詢MongoDB的內部陣列

{ "Locales" : { 
    "Invariant" : { 
     "Checksum" : "7B4C15B697AAFC1484679076667267D2", 
     "Metadata" : { 
     "app" : { 
      "@appType" : "app", 
      "@id" : "284896113", 
      "categories" : { 
      "category" : [{ 
       "@id" : "6011", 
       "@parentid" : "36", 
       "@type" : "GENRE", 
       "##text##" : "Music" 
       }, { 
       "@id" : "6016", 
       "@parentid" : "36", 
       "@type" : "GENRE", 
       "##text##" : "Entertainment" 
       }], 
      "##category" : null 
      }, 
      "rating" : "2.5", 
      } 
     } 
     }, 
     "ModifiedDate" : ISODate("2012-09-07T09:07:58.218Z") 
    } }, "_id" : "selection/live/app(284896113)" 

有我的數據庫就是其中約10萬人。我需要找出幾件事情。首先有多少人擁有「類別」數組,然後有多少人在他們下面有一個或多個「類別」數組,最後,其中有多少人擁有##文本##的值?

乾杯

回答

2

你可以用$存在:

db.things.count({ 
    'Locales.Invariant.Metadata.app.categories': {$exists: true }}); 

db.things.count({ 
    'Locales.Invariant.Metadata.app.categories.category': {$exists: true }}); 

db.things.count({ 
    'Locales.Invariant.Metadata.app.categories.category.##text##': 
     {$exists: true }}); 

注意,這將返回文件的數量,不匹配的計數。在你的例子中,它會返回'1',因爲有一個文檔,而不是'2'(兩個##文本##)。

+0

最後編輯得到它。 :) 謝謝! –