MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoError:Неуспешна проверка на документа - Как да вмъкна и float, и int в едно и също поле - което е маркирано като двойно?

Намерени са 2 решения:

1. Донякъде кабелен подход - защото завършвам със mixed types в моята колона. По принцип може да не искате смесени типове, тъй като добавя сложност - и няма основателна причина те да се считат за смесени в моя случай.

По принцип вместо единичен тип , можете да използвате списък с типове така:

bsonType: "double" срещу bsonType: [ "double", "int" ] .

Тази функция е документирана тук:$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. Препоръчителният подход , намери това с помощта на @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..

Това трябва да работи и за всички други типове като timestamp и такива:




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB еквивалент на SQL ИЛИ

  2. запитване на колекция без предаване на схема в mongoose

  3. MongoDB регулярен израз с индексирано поле

  4. Съпоставете „масив от обекти“ към прост масив от ключови стойности

  5. Зареждането на частични части е неуспешно на сървъра JS