sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoError:Dokument misslyckades validering - Hur infogar man både float och int i samma fält - som är markerat som dubbelt?

Hittade 2 lösningar:

1. Ett något trådbundet tillvägagångssätt - eftersom jag slutar med mixed types i min kolumn. I allmänhet kanske du inte vill ha blandade typer eftersom det ger komplexitet - och det finns ingen bra anledning för att de ska anses vara blandade i mitt fall.

I princip istället för en enskild typ , kan du använda en lista med typer som så:

bsonType: "double" vs bsonType: [ "double", "int" ] .

Den här funktionen dokumenteras här:$types .

myValidatorIs =
  { validator:
      { $jsonSchema :
          { bsonType: "object"
          , required: [ "price" ]
          , properties:
              { price:
                  { bsonType: [ "double", "int" ]  // add "int" in this array here
                  , description: "must be a double/float and is required"
                  }
              }
          }
      }
  , validationAction: "error"
  , validationLevel: "strict"
  };

2. Det rekommenderade tillvägagångssättet , hittade detta med hjälp av @lvrf

const MongoType_Double = require('mongodb').Double;

myValidatorIs =
  { validator:
      { $jsonSchema :
          { bsonType: "object"
          , required: [ "price" ]
          , properties:
              { price:
                  { bsonType: "double"  // leave this as double
                  , description: "must be a double/float and is required"
                  }
              }
          }
      }
  , validationAction: "error"
  , validationLevel: "strict"
  };

// then use the MongoType_Double constructor like so: 

db.collection("collection").insertOne({ price : MongoType_Double(4.0) }); // no errors..

Detta bör också fungera för alla andra typer som timestamp och sådant:




  1. Lata laddar/mer data Bläddra i Mongoose/Nodejs

  2. Det bästa sättet att vara värd för MongoDB på DigitalOcean

  3. Vad är skillnaden mellan Spring Data MongoDB och Hibernate OGM för MongoDB?

  4. Hur hittar man storleken på det specifika dokumentet i MonogoDB Collection?