2012-09-21 48 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

最后编辑得到它。 :) 谢谢! –