2017-12-30 52 views
0

Ich habe ein Schema, in dem es hat einige Felder zu finden .. ich bin nicht in der Lage Abfrage für diese zu finden, i $ Gruppe versucht, aber war nicht in der Lage Ergebnisse zu finden
Kollektion: AufgabenCant Lage Subdokument zählt basierend auf Zustand

{ 
    "_id" : ObjectId("5a475ee4b342fa03e71192bd"), 
    "title" : "Some Title", 
    "assignedUsers" : [ 
     { 
      "_id" : ObjectId("5a47386ee4788102e530f60d"), 
      "name" : "Sam", 
      "status" : "Unconfirmed" 
     }, 
     { 
      "_id" : ObjectId("5a473878e4788102e530f60f"), 
      "name" : "Ricky", 
      "status" : "Rejected" 
     } 
     { 
      "_id" : ObjectId("5a47388be4788102e530f611"), 
      "name" : "Niel", 
      "status" : "Unconfirmed" 
     }, 
     { 
      "_id" : ObjectId("5a47388be4788102e530f611"), 
      "name" : "ABC", 
      "status" : "Unconfirmed" 
     }, 
     { 
      "_id" : ObjectId("5a473892e4788102e530f612"), 
      "name" : "Rocky", 
      "status" : "Rejected" 
     } 
    ] 
} 

Ergebnis enthalten sollte Unconfirmed = 3 Abgelehnt = 2

Dank

+0

Sie können '' $ elementMatch'' verwenden –

+0

was ist die Bedingung, über die Sie abfragen möchten? – Avij

Antwort

1

Verwenden Sie den folgenden Abfrage,

db.coll3.aggregate([{ 
      $unwind: '$assignedUsers' 
     }, { 
      $group: { 
       _id: '$assignedUsers.status', 
       'count': { 
        $sum: 1 
       } 
      } 
     } 
    ]) 

Wenn Sie gegen ein bestimmtes Dokument abfragen möchten sicherstellen, verwenden Sie einen $ Match als erste Stufe und verwenden dann die anderen $ 2 und $ entspannen Gruppe. Sie erhalten würden das Ergebnis als

{ "_id" : "Rejected", "count" : 2 } 
{ "_id" : "Unconfirmed", "count" : 3 } 

Hoffnung, das hilft.

+0

ya, ich wollte es für ein bestimmtes Dokument, und hinzugefügt $ match, Es gibt meine erwarteten Ergebnisse, danke –

Verwandte Themen