Python中的有序字典:添加到MongoDB
我有一个包含两个元素的元组列表,第一个元素是一个字符串(某个参数的名称),第二个元素是一个浮点数(这个参数的值)。比如说,
thelist = [('costperunit', 200), ('profit', 10000), ('fixedcost', 5000),
('numpeople':300)]
实际情况中还有很多这样的元组,名称也各不相同。我想把这些作为键值对添加到mongoDB数据库里。下面是我想要添加的方式。
db.collection.insert( {paramvalues: {'costperunit':200, 'profit':10000,
'fixedcost': 5000, 'numpeople': 300} } )
一种方法是:
dictform = dict(thelist)
db.collection.insert( {paramvalues: dictform} )
不过,这种方法不能保证参数名称和值的顺序,因为dict
会改变顺序。
我试过
from collections import OrderedDict
dictform = OrderedDict(thelist)
db.collection.insert( {paramvalues: dictform} )
这种方法保持了参数名称和值的原始顺序,但它把参数名称和值插入成了列表的列表。
我对mongoDB非常陌生,正在努力学习。请问在Python或mongoDB中有没有什么技巧可以实现我想要的?我希望在mongoDB数据库中将paramvalues
的值作为字典(或JavaScript对象),这样我就可以根据某个参数的值来过滤结果。例如,我可以这样做:
db.collection.find( {'paramvalues.costperunit': 200} )
如果你确定没有办法做到这一点,请告诉我。
谢谢。
1 个回答
8
Pymongo 提供了一种字典的子类,叫做 bson.son.SON:http://api.mongodb.org/python/current/api/bson/son.html。这个子类是有顺序的,适合在需要保持顺序的情况下使用,比如发送命令的时候。