2016-04-19 3 views
0

Ich habe mich viel umgesehen, aber ich habe es nicht geschafft, eine Antwort zu finden. Es ist wahrscheinlich einfach, aber ich kann es einfach nicht schaffen.Erhalten Array-Anzahl von bestimmten Dokument in Pymongo

Ich habe eine Sammlung mit einigen Dokumenten und in diesen Dokumenten gibt es mehrere Arrays.

Ich möchte wissen, wie Sie ein Dokument abfragen und dann für ein bestimmtes Array in diesem Dokument zählen. etwa wie folgt:

db.test.find_one({"id":"test"}).count("specific_array") 

Das Ergebnis nur die Menge der Dokumente innerhalb des angegebenen Array zurückgeben sollte.

Vielen Dank im Voraus.

+0

Sie müssen Beispieldokumente mit der erwarteten Ausgabe bereitstellen. – styvane

Antwort

0

Da ich nichts Nützliches finden konnte, was ich will, entschied ich mich einfach Python dafür zu benutzen. Rückkehr nur das Array I verwendet:

result = db.test.find_one({"id":"test"},{'_id':0, 'specific_array':1}) 

dann ich es auch einen String umgewandelt:

strresult = str(result) 

Danach habe ich die Länge wissen musste also, wenn die Länge war> 16 I einen Befehl gab .

if len(strresult) > 16: 
    dosomething 

Dies ist nicht optimal, aber es funktioniert, wenn jemand einen besseren Weg findet, wird ich diese Antwort löschen und wählen Sie die bessere Antwort!

0

Haben Sie einen Blick auf diesen Thread:

mongodb count sub-document and list totals

Es ist die einzige Art und Weise auszuführen, was Sie wollen ...

aber Sie wahrscheinlich den Cursor Methode overide können Ihre Subdokument zu akzeptieren und gebe nur die Array-Größe zurück, aber ich empfehle dir das nicht.

0

Verwenden aggregate mit match und project

db.test.aggregate([{$match : {id: "test"}},{$project: {count : {$size : "$specific_array"}, specific_array: "$specfic_array"}}]) 

Es wird mehrere Dokumente zurückgeben den Filter {id: "test"} entsprechen. Die gefundenen Dokumente enthalten nur die in $project angegebenen Felder.

Verwandte Themen