2 Lösungen gefunden:
1. Ein etwas verdrahteter Ansatz - weil ich am Ende bei mixed types
lande in meiner Kolumne. Im Allgemeinen möchten Sie möglicherweise keine gemischten Typen, da dies die Komplexität erhöht - und es gibt keinen guten Grund, sie in meinem Fall als gemischt zu betrachten.
Im Grunde statt eines einzelnen Typs , können Sie eine Liste von Typen verwenden so:
bsonType: "double"
vs bsonType: [ "double", "int" ]
.
Diese Funktion ist hier dokumentiert:$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. Die empfohlene Vorgehensweise , fand dies mit Hilfe von @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..
Dies sollte auch für alle anderen Typen wie timestamp
funktionieren und so: