im numerischen Modell für die Geldwerte speichern, wobei der MongoDB docs Zustand:Extract Decimal aus NumberDecimal mit Mongo (OSE)
Aus der mongo Schal Dezimalwerte zugeordnet und abgefragt die NumberDecimal() Konstruktor.
Wenn Sie die Morphia Java-Bibliothek verwenden, werden BigDecimals automatisch als BigDecimals eingefügt.
Ich frage Mongo im Knoten mit Mongoose und versuche, den numerischen Wert eines Feldes, das als NumberDecimal gespeichert ist, zu extrahieren. Allerdings wird der Wert seltsam in Abfrageergebnissen eingewickelt und ich bin nicht sicher, wie es durch Mongo oder Mungo extrahieren:
[
{
"openValue":{
"$numberDecimal":"119.931"
},
"timestamp":"2017-01-20T10:30:00.000Z"
},
{
"openValue":{
"$numberDecimal":"119.965"
},
"timestamp":"2017-01-20T10:31:00.000Z"
}
]
Einen Beitrag las ich parseFloat()
in meinem Anwendungscode angegeben verwendet wird ausführen, was ich will, aber Es ist nicht effizient, das Ergebnis zu durchlaufen, um diese Transformation durchzuführen. Das Vermeiden von Iterieren und Transformieren würde bedeuten, die Funktion auf den NumberDecimals immer dann auszuführen, wenn ich jedes Mal ihren Wert haben möchte, was lästig wäre.
Gibt es eine Möglichkeit, Mongo oder Mongoose zu verwenden, um das obige JSON-Abfrageergebnis in das Folgende zu konvertieren?
[
{
"openValue": 119.931,
"timestamp":"2017-01-20T10:30:00.000Z"
},
{
"openValue": 119.965,
"timestamp":"2017-01-20T10:31:00.000Z"
},
{
"openValue": 119.975,
"timestamp":"2017-01-20T10:32:00.000Z"
}
]
Ich habe versucht, das Feld als ...openValue.$numberDecimal
Auswahl, aber das hat nicht funktioniert. Vielen Dank!
Edit: Hier ist mein Mongoose Schema:
var EquityHistoryModel = new Schema({
_id: {
equityIdentifier: { type: {
exchange: { type: String, index: true },
symbol: { type: String, index: true }
}, index: true },
instant: { type: Date, index: true },
durationMinutes: { type: Number }
},
open: { type: mongoose.Schema.Types.Decimal },
high: { type: mongoose.Schema.Types.Decimal },
low: { type: mongoose.Schema.Types.Decimal },
close: { type: mongoose.Schema.Types.Decimal },
volume: { type: Number },
isDividendAdjusted: { type: Boolean },
isSplitAdjusted: { type: Boolean }
}, { collection: 'equityHistories', versionKey: false });
Hier ist der Mungo-Abfrage für die erste JSON Ergebnis über:
mongo.EquityHistoryModel.aggregate([
{
"$match":{
"_id.equityIdentifier.exchange":passed_in,
"_id.equityIdentifier.symbol":passed_in,
"_id.instant":passed_in
}
},
{
"$project":{
"_id":0,
"openValue":"$open",
"timestamp":"$_id.instant"
}
}
],
Können Sie Ihre Schema-Definition zeigen? – chridam
@chridam Ich habe mein Schema und die Abfrage, die ich verwende, hinzugefügt! –