MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

MongoError:Không xác thực được tài liệu - Làm cách nào để chèn cả float và int vào cùng một trường - được đánh dấu là trường kép?

Tìm thấy 2 giải pháp:

1. Một cách tiếp cận có phần có dây - bởi vì tôi kết thúc với mixed types trong chuyên mục của tôi. Nói chung, bạn có thể không muốn các loại hỗn hợp vì làm tăng thêm độ phức tạp - và không có lý do chính đáng để chúng được coi là hỗn hợp trong trường hợp của tôi.

Về cơ bản thay vì một loại duy nhất , bạn có thể sử dụng danh sách các loại như vậy:

bsonType: "double" so với bsonType: [ "double", "int" ] .

Tính năng này được ghi lại tại đây: $ loại .

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. Cách tiếp cận được đề xuất , tìm thấy điều này với sự trợ giúp từ @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..

Điều này cũng sẽ hoạt động cho tất cả các loại khác như timestamp và như vậy:




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tắt tính năng lọc từ dừng trong tìm kiếm văn bản MongoDB

  2. Cập nhật hàng loạt mảng tài liệu phụ phù hợp trong Mongodb

  3. MongoDB $ ifNull

  4. Cập nhật tài liệu lồng nhau Mongoose không thành công?

  5. Kết nối Robomongo với Meteor mongodb