2017-05-31 2 views
0

ich bin mit mongodb 3.4, um eine ordnungsgemäße Preise zu meiner Datenbank einzufügen ..Python - Pymongo MongoDB 3.4 - NumberDecimal

Nach:

https://github.com/mongodb/specifications/blob/master/source/bson-decimal128/decimal128.rst#reading-from-extended-json 

ich diesen Code in meinem Python verwendet:

'credits': {'$numberDecimal': Decimal128('9.99')}, 

aber wirft:

bson.errors.InvalidDocument: key '$numberDecimal' must not start with '$' 

Also, was ist die richtige Syntax zum Einfügen von Nummerdezimal in Mongodb mit Python?

Dank und Grüße

Antwort

-1

Der Link, den Sie Sie bereitgestellt erzählt über von erweiterten JSON zu lesen. Wenn Sie es als Dezimalzahl einfügen möchten, sollten Sie nur verwenden:

{ 'credits': '{0:.2f}'.format(9.99) } 

Der '{0:.2f}'.format(9.99) Teil der Zahl formatiert werden Sie (in diesem Fall 9,99) passieren 2 Dezimalstellen jedes Mal aufzunehmen. So sollte '{0:.2f}'.format(9) 9.00 in Ihrer Datenbank ergeben.

+0

Ihre Syntax arbeitet für 9.99 ... aber ich brauche es immer ein Doppel einzufügen, auch für "9" und "9.00", weißt du? –

+0

Aktualisierte meine Antwort ... Warum auch runter? :) – errata

0

Ganz einfach:

collection.insert_one({'credits': Decimal128('9.99')}) 

(Die "$ numberDecimal" Syntax ist für eine Dezimalzahl in einem JSON-String exprimierenden Aber du bist überhaupt nicht mit JSON..)