2つの解決策が見つかりました:
1。やや有線のアプローチ -私はmixed types
で終わるので 私のコラムで。一般に、複雑さが増すため、混合型は望ましくない場合があります。私の場合、混合型と見なされる理由はありません。
基本的にシングルタイプの代わりに 、タイプのリストを使用できます そのように:
bsonType: "double"
vs 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
などの他のすべてのタイプでも機能するはずです。 など: