Wie um zu testen, ob ein string-Feld in einer MongoDB-Dokument ist nicht leer?

Ich versuche, um die Anzahl der Dokumente, die ein Feld mit einer leeren Zeichenfolge. Dieses Feld, nennen wir es "Field_One" ist in allen Dokumenten (also, klar zu sein, ich bin nicht versucht, Sie zu finden, wenn das Feld vorhanden ist oder nicht, will ich herausfinden, welche Dokumente haben nichts (leere Zeichenfolge) im Feld "Field_One".

Ich habe versucht, mithilfe (mit Hilfe der C# - Treiber):

collection.Find(Query.NE("Field_One", BsonNull.Value)).Count()
collection.Find(Query.NE("Field_One", BsonString.Null)).Count()

und auch (jemand schlug vor, dass diese irgendwo):

collection.Find(Query.GT("Field_One", BsonString.Empty)).Count()

Aber es funktioniert nicht (Sie kehren alle Dokumente).

Auch, als eine Verwandte Frage: Ist dies der beste Weg, um die Anzahl der passenden Dokumente in einer Sammlung? Soweit verstehe ich das, es wird nicht wirklich das abrufen der Dokumente aus der Datenbank in meinem Programm, so dass die Anzahl Berechnung erfolgt in der MongoDB-server.

  • ja, zählen ist getan auf dem server. nur als sanity-check, wenn Sie sagen, leerer string, zeigt es sich als "" - Wert, wenn Sie Holen Sie das Dokument, und überprüfen Sie das Feld?
  • Hallo Asya, danke für deine Antwort. Ich holte den JSON-und es zeigt, wie "" für diejenigen Dokumente, die keine Daten in diesem Feld. Also das Feld ist da, vom Typ String und hat "" für einige Dokumente und Informationen für andere.
  • in der mongo-shell, die Sie ausprobieren können: db.Sammlung.find({Bereich: { $type:10 }}). Überprüfen Sie in dieser Dokumentation: docs.mongodb.org/manual/reference/operator/type
InformationsquelleAutor Erick Tejada | 2013-04-17
Schreibe einen Kommentar