내 nodejs 응용 프로그램에서 decimal128 데이터 형식을 사용하려고합니다.십진수 지원 Mongodb
,몽고 버전 "3.4.2",
OS : {유형 : "다윈"이름 : "맥 OS X", 아키텍처 : "x86_64에"버전 "16.7.0"
nodejs 버전 6.11.2
몽구스 버전 4.11.13
몽구스 사용하여 기본 MongoDB의 드라이버 버전 2.2.31
MongoDB를의 설정 :
storage:
engine: wiredTiger
dbPath: "/Users/backend/Desktop/mongo/data"
내가 뭘? 내가있어 몽구스 하위 스키마이 스키마는 다음과 스키마 문서의 하위 문서입니다
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 }
});
:
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;
});
:
업데이 트를 방법을 사용하여 메신저
...
premises : [ Premises ],
...
새로운 하위 문서를 추가하려면
또한 아래 코드를 사용했습니다.
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;
});
그러나 두 경우 모두에서 같은 오류가 발생합니다 :
{ "오류": { "이름": "MongoError를", "메시지": "$ numberDecimal는 저장 유효하지 않습니다." { "ok": 0, "n"} "드라이버": true, "index": 0, "code": 52, "errmsg": "$ numberDecimal 은 저장소에 유효하지 않습니다. : 0, "nModified": 0, "_ ID": "59ce4e8cecba947a9a342f37"}}
나는 싶어
같은 몇 가지 해결 방법을 사용하지 말아몽구스 더블
내 컬렉션에 음수를 지원합니다. ur 답변 및 솔루션에 대한 많은 노력.