Sagen wir, ich habe folgende Dokumente in myCollection:
/* 1 */
{
"_id" : ObjectId("57861717ae5cdd68414b22fc"),
"category" : " ",
"name" : "Category is a space"
}
/* 2 */
{
"_id" : ObjectId("57861728ae5cdd68414b22fd"),
"category" : null,
"name" : "Category is null"
}
/* 3 */
{
"_id" : ObjectId("5786173dae5cdd68414b22fe"),
"name" : "Category is a not present"
}
/* 4 */
{
"_id" : ObjectId("57861755ae5cdd68414b22ff"),
"category" : "value",
"name" : "Category has value"
}
Ich möchte das Dokument abzufragen, die Kategoriefeld hat und der Wert nicht null ist oder nicht leer.
habe ich versucht, die folgenden Anfragen:
Mit
$exists
und zwei$ne
db.myCollection.find({"category":{"$exists":true}, "category":{"$ne":null}, "category":{"$ne":" "}})
ich für diese drei Dokumente einsehen.
/* 1 */
{
"_id" : ObjectId("57861728ae5cdd68414b22fd"),
"category" : null,
"name" : "Category is null"
}
/* 2 */
{
"_id" : ObjectId("5786173dae5cdd68414b22fe"),
"name" : "Category is a not present"
}
/* 3 */
{
"_id" : ObjectId("57861755ae5cdd68414b22ff"),
"category" : "value",
"name" : "Category has value"
}
Mit
$exists
und$ne=null
db.myCollection.find({"category":{"$exists":true}, "category":{"$ne":null}})
Ich habe 2 Dokumente für diese.
/* 1 */
{
"_id" : ObjectId("57861717ae5cdd68414b22fc"),
"category" : " ",
"name" : "Category is a space"
}
/* 2 */
{
"_id" : ObjectId("57861755ae5cdd68414b22ff"),
"category" : "value",
"name" : "Category has value"
}
Schließlich habe ich versucht, mit
$exists
und zwei$ne
eingeschlossen in$and
db.myCollection.find({"category":{"$exists":true}, "$and":[{"category":{"$ne":null}}, {"category":{"$ne":" "}}]})
Nur gab dies die gewünschte Ausgabe:
/* 1 */
{
"_id" : ObjectId("57861755ae5cdd68414b22ff"),
"category" : "value",
"name" : "Category has value"
}
Jetzt, wo ich mein gewünschtes Ergebnis habe, ich wan t zu verstehen, was falsch ist mit den anderen beiden Abfragen, insbesondere der ersten.
Das macht Sinn. Also, wenn wir es jetzt betrachten, wenn das gleiche Feld mehrfach verwendet wird, wird nur der letzte Eintrag in Betracht gezogen, genau wie in einer HashMap. Gutes Lernen heute. Danke für die Klärung. – Nattyk