2016-04-16 2 views
0

У меня есть документы, как показано ниже.Ускоренный встроенный документ в mongodb

{ 
    "_id": { 
     "$oid": "526fdc1fd6b0a8182300009c" 
      }, 
    "body": "test abc", 
    "emb" : [{"body":"text","em":"abc.com","auth":"XYZ"}, 
      {"body":"text","em":"abc.com","auth":"ABC"} 
      ] 
} 
{ 
    "_id": { 
     "$oid": "526fdc1fd6b0a8182300009d" 
      }, 
    "body": "test abc", 
    "emb" : [{"body":"text","em":"abc.com","auth":"PQR"}, 
      {"body":"text","em":"abc.com","auth":"ABC"} 
      ] 
} 

Если я хочу считать вхождения каждой «AUTH» во внутреннем массиве документов, как я могу это сделать? В результате я ожидаю это

"ABC":2 
"PQR":1 
"XYZ":1 

ответ

1
  1. $unwindemb массива с {$unwind: "$emb"}
  2. группы emb.auth при подсчете с {$group: { _id: "$emb.auth", count: { $sum:1 } } }

Это дает вам информацию, которую вы хотите, хотя и в несколько иных синтаксис:

{ _id:"ABC", count:2 }, 
{ _id:"PQR", count:1 }, 
{ _id:"XYZ", count:1 } 
Смежные вопросы