Nitty-Gritty Detaljer
Gennemlæser late#_10.c. kilden. /a> , der er dybest set 2 tilfælde, når man laver sammenligninger, der involverer null
:
- Hvis #2.hcantypes4.hcan a> af de BSON-elementer, der sammenlignes, er forskellige, kun lighedssammenligninger (
==
,>=
,<=
) af null &undefined vil returneretrue
; ellers enhver sammenligning mednull
returnererfalse
.
Bemærk: Ingen anden BSON-type har den samme kanoniske type somnull
. - Hvis #2.hcantypes4.hcan a> er de samme (dvs. begge elementer er
null
), derefter $gt , $lt ) henviser til dokumentationen, som du oprindeligt linkede a> , hvilket indebærer, at sammenligningsoperatorerne bør arbejde mednull
. Desuden sortering af forespørgsler (dvs. ,db.find().sort()
) gør følg nøjagtigt den dokumenterede sammenlignings-/sorteringsadfærd.Dette er i det mindste inkonsekvent. Jeg synes, det ville være værd at indsende en fejlrapport til MongoDB's JIRA-websted .
Originalt svar:
Jeg tror ikke, at denne adfærd er en fejl.
Den generelle konsensus for Javascript er det
undefined
betyder ikke tildelt mensnull
betyder tildelt, men ellers udefineret . Værdisammenligninger med udefineret, bortset fra lighed, giver ikke mening, i det mindste i matematisk forstand.Da BSON trækker meget fra JavaScript, gælder dette også for MongoDB.