sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB jämförelseoperatorer med null

Nitty-Gritty Detaljer

Läser igenom , det finns i princip två fall när man gör jämförelser som involverar null :

  1. Om #onicaltypes a> av BSON-elementen som jämförs är olika, endast jämställdhetsjämförelser (== , >= , <= ) av null &undefined returnerar true; annars någon jämförelse med null returnerar false .
    Obs! Ingen annan BSON-typ har samma kanoniska typ som null .
  2. Om #onicaltypes a> är desamma (dvs båda elementen är null ), sedan alparesaV kallas. För null , detta returnerar bara skillnaden mellan $gt , $lt ) refererar till dokumentationen som du ursprungligen länkade a> , vilket innebär att jämförelseoperatorerna bör arbeta med null . Dessutom sortering av frågor (dvs. , db.find().sort() ) gör följ noggrant det dokumenterade jämförelse-/sorteringsbeteendet.

    Detta är åtminstone inkonsekvent. Jag tycker att det skulle vara värt att skicka in en felrapport till MongoDB:s JIRA-webbplats .

    Ursprungligt svar:

    Jag tror inte att det här beteendet är en bugg.

    Den allmänna konsensus för Javascript är det undefined betyder ej tilldelad medan null betyder tilldelad men annars odefinierad . Värdejämförelser med odefinierade, bortsett från jämlikhet, är inte vettiga, åtminstone i en matematisk mening.

    Med tanke på att BSON drar mycket från JavaScript, gäller detta även MongoDB.




  1. mongo-go-drivrutin:kapslat OR/AND-frågefilter

  2. Ruby - Redis-baserad mutex med utgångsimplementering

  3. Hantera MySQL, MongoDB &PostgreSQL med ChatOps från Slack

  4. Mongoose aggregat, kan inte dynamiskt lägga till något fält:{ $not; null }