Oto moja struktura danych.Test pusty ciąg w mongodb i pymongo
[{
"name": "David",
"lastname": "",
},
{
"name": "Angela"
}]
"Nazwisko" jest czasami obecne, a czasami nie, a czasami jest "".
Chcę, aby wszystkie wiersze, które mają nazwisko nie są równe "". Ale to nie działa. Zwraca oba wiersze, gdy nazwisko jest "" i kiedy nazwisko w ogóle nie występuje. w powyższym przykładzie chcę dostać tylko węzeł David.
db.collection.find({"lastname": {"$ne": ""}})
Cytaty około $ ne są potrzebne dla Pythona. więc wyrażenie {$ ne: ""} sprawdza się jako prawdziwe, zarówno gdy level2_c jest "", jak i wtedy, gdy węzeł level2_c nie istnieje. Musiałem więc odfiltrować je w ten sposób {"level2_c": {"$ exists": True}, "level1_b.level2_c": {"$ ne": ""}}. to działa, ale wygląda nieco brzydko. –
Testowałem z powłoki mongo. Cieszę się, że znalazłeś poprawną odpowiedź. – Kyle
Dzięki. Trochę to wyjaśniłem. czy możesz ponownie spojrzeć na to. czy jest lepsza odpowiedź niż ta: {"lastname": {"$ exists": True}, "lastname": {"$ ne": ""}}? –