2016-06-01 11 views
0

suchen Ich habe Location-Tabelle wie folgt. Ich brauche die Details von nur Fahrer, deren Bewertungen für diesen bestimmten Ort über drei sind.MongoDB - Wie Array des Wörterbuchs in Wörterbuch

Vielen Dank im Voraus ...

[ 
    { 
     "name":"Delhi", 
     "cab_details(sub table)":[ 
      { 
       "driver_details"(join):{ 
        "name":"1111", 
        "ratings_above_three":true 

       }, 
       "date_joining": date 
      }, 
      { 
       "driver_details":{ 
        "name":"2222", 
        "ratings_above_three":false 
       }, 
       "date_joining": date 
      }     
     ] 
    }  
] 
+0

Haben Sie versucht: db.collection.find ({'cab_details.driver_details.rating_above_three': true}) – rkatkam

Antwort

0

Es wäre viel einfacher, wenn Sie Ihre drivers in separate collection setzen. MongoDB verarbeitet keine sehr gut wachsenden Objekte.

Folgen in Ihrem Schema Design the principle of least cardinality

auf diese Frage finden: mongodb-performance-with-growing-data-structure

Ich vermuten, dass das Modell, das Sie ist Citycities aus der Sammlung präsentiert. Daher würde ich empfehlen, eine separate Sammlung namens cab_drivers zu erstellen und sie mit CabDriver Dokumenten zu füllen. Sie können eine Beziehung zwischen ihnen aufrechterhalten, indem Sie verwenden. Speichern Sie ein Array von CabDriver._id Werten in Ihrem City als cab_drivers, es wäre viel einfacher, sie abzufragen, zu validieren und zu aktualisieren. Auch das cab_drivers Array innerhalb eines City Dokuments würde viel langsamer wachsen, als wenn die gesamten Dokumente in dem übergeordneten Dokument verbleiben. Wenn Sie mongoose verwenden, können Sie dann: city.populate('cab_drivers') verwenden, um alle zugehörigen Dokumente auf Anwendungsebene zu laden.

Verwandte Themen