Utilisation du type de données decimal128 dans mon application nodejs.Prise en charge décimale Mongodb
version mongo "3.4.2",
os: {type: "Darwin", nom: "Mac OS X", l'architecture: "x86_64", la version: "16.7.0"
nodejs Version 6.11.2
version 4.11.13 mangouste
mangouste à l'aide de la version du pilote natif MongoDB 2.2.31
config MongoDB:
storage:
engine: wiredTiger
dbPath: "/Users/backend/Desktop/mongo/data"
Qu'est-ce que je fais? J'ai mangouste schéma sous-document
const Premises = mongoose.Schema({
floor : { type: mongoose.Schema.Types.Decimal128, required: true },
deleted : { type: Boolean, default: false },
created_at : { type: Date, default: Date.now },
updated_at : { type: Date, default: Date.now }
});
Ce schéma est un sous-document du document avec le schéma ci-dessous:
...
premises : [ Premises ],
...
Pour ajouter de nouvelles im en utilisant les sous-documents méthode update:
var queryFilter = {
'deleted' : false,
'buildings._id' : params.building_id
};
var premise = {
'_id': mongoose.Types.ObjectId(),
'floor': params['floor']
};
Block.update(queryFilter, { '$addToSet': { 'buildings.$.premises': premise } }, { safe: true }, function (error, result) {
result['_id'] = premise['_id'];
callback(error, result || null);
return;
});
Aussi j'ai utilisé le code ci-dessous:
var queryFilter = {
'deleted' : false,
'buildings._id' : params.building_id
};
var premise = {
'_id': mongoose.Types.ObjectId(),
'floor': mongoose.Types.Decimal128.fromString(params['floor'])
};
Block.update(queryFilter, { '$addToSet': { 'buildings.$.premises': premise } }, { safe: true }, function (error, result) {
result['_id'] = premise['_id'];
callback(error, result || null);
return;
});
Mais obtenir la même erreur dans les deux situations:
{ "erreurs": { "name": "MongoError", "message": "$ numberDecimal est pas valable pour stockage.", "driver": true, "index": 0, "code": 52, "errmsg": "$ numberDecimal n'est pas valide pour le stockage ."}, "data": {"ok": 0, "n" : 0, "nModified": 0, "_ id": "59ce4e8cecba947a9a342f37"}}
Je ne veux pas utiliser une solution de contournement comme
mangouste double
pour soutenir les nombres négatifs dans mes collections. Beaucoup de merci pour vos réponses et solutions.