MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoError:Sprawdzanie poprawności dokumentu nie powiodło się - Jak wstawić zarówno float, jak i int w to samo pole - które jest oznaczone jako podwójne?

Znaleziono 2 rozwiązania:

1. Nieco przewodowe podejście - ponieważ skończyłem z mixed types w mojej kolumnie. Ogólnie rzecz biorąc, możesz nie chcieć mieszanych typów, ponieważ zwiększa to złożoność - i nie ma dobrego powodu, aby w moim przypadku były uważane za mieszane.

Zasadniczo zamiast pojedynczego typu , możesz użyć listy typów jak tak:

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

Ta funkcja jest udokumentowana tutaj:$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. Zalecane podejście , znalazłem to z pomocą @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..

Powinno to również działać dla wszystkich innych typów, takich jak timestamp i takie:




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Wewnętrzna tablica sortowania Mongodb

  2. wstawianie wielu dokumentów za pomocą mongoengine do mongodb

  3. Jak uzyskać wszystkie klucze kolekcji zawierające pewną wartość (String) w mongodb?

  4. Zmień kształt tablicy przechowywanej w kolekcji i eksportuj do CSV

  5. Zapobieganie wyścigom związanym z bazą danych w Node.js