2016-07-31 17 views
-1

Ich habe ein Dokument wie folgt:Mungo: return nur Schlüssel aus einem Dokument

var data={"john:"friend", 
      "fruit":"banana", 
      "tv":[{"livingroom":"led", 
        "bedroom":"lcd" 
        "fruit":"banana"}]} 

und ich versuche, eine Reihe von all seinen einzigartigen Schlüssel zurückzugeben, wie folgt:

["john","fruit,livingroom,bedroom] 

so I haben Sie den folgenden Code:

var mykeys=[]; 
database.find({},function(result){ 
    result.forEach(function(each){ 
     for (key in each){ 
      mykeys.push(key) 
     }; 
    }}); 

Aber das gibt eine ganze Reihe von Objekten ich brauche nicht wie:

[$__, isNew, errors, _doc, $__original_save, save, _pres, _posts....] 

Gibt es trotzdem, ich kann diese Schlüssel loswerden, die nicht im Dokument sind? Ich bin mir dessen bewusst mapreduce Antwort hier MongoDB get the names of all the keys in a MongoDB collection, aber ich weiß nicht, wie man es in Mungo übersetzen. AFAIK mongoose unterstützt runCommand nicht.

+3

Mögliche Duplikat [MongoDB Namen aller Schlüssel in der Sammlung Get] (http://stackoverflow.com/questions/2298870/mongodb-get-names-of-all-keys-in-collection) –

+0

@ Bertrand Martel: Ich habe mir die Lösung angeschaut, aber es erscheint mir zu kompliziert für das, was ich will. Ich brauche keine eindeutigen Schlüssel in einer Sammlung zu finden, nur alle Schlüssel in einem Dokument ohne die Vitale. Auch bin ich mir nicht sicher, wie man mapreduce in mongous implementiert. – qts

+0

Wollen Sie Schlüssel aus einem Dokument (beliebiges Dokument) aus Ihrer Sammlung extrahieren? –

Antwort

4

Sie müssen die _doc Eigenschaft verwenden, da diese Ihr tatsächliches Dokument enthält. Außerdem können Sie einfach Object.keys verwenden, um eine Liste der Eigenschaften zu erhalten.

var mykeys; 
database.findOne({}, function(result) { 
    mykeys = Object.keys(result._doc); 
}); 
+0

Diese Antwort funktioniert, aber ich habe gerade gemerkt, dass ich in meinem Dokument Unterarrays habe, die das zu vermasseln scheinen :-(. Also habe ich deine Antwort trotzdem upvolotiert und nach Frage bearbeitet. – qts

Verwandte Themen