开发者

Ordered Dictionary in Python: add to MongoDB

I have a list of two element tuples, where the first element is a string (name of some parameter) and the second element is a float (the value of that parameter). For example,

thelist = [('costperunit', 200), ('profit', 10000), ('fixedcost', 5000), 
           ('numpeople':300)]

There are many more such tuples and the names are different in the real case. I want to add these to a mongoDB database as key: value pairs. Here is how I want to add it.

db.collection.insert( {paramvalues: {'costperunit':200, 'profit':10000, 
                                     'fixedcost': 5000, 'numpeople': 300} } )   

One way to do this is:

dictform = dict(thelist)
db.collection.insert( {paramvalues: dictform} )

This, however, does not ensure the order of the parameter names and values as dict c开发者_如何学编程hanges the order.

I tried

from collections import OrderedDict 
dictform = OrderedDict(thelist)
db.collection.insert( {paramvalues: dictform} )

This maintains the original order of parameter names and values, however, inserts the parameter names and values as list of lists.

I am very new to mongoDB and trying to learn it. Is there a trick either in Python or in mongoDB that would achieve what I want? The reason I want the value of the key paramvalues in the Mongodb database as a dictionary (or Javascript object) is that I can then filter results using the value of some parameter. For example, I can do:

db.collection.find( {'paramvalues.costperunit': 200} )

If you are sure there is no way to do this, I would appreciate if you let me know.

Thanks.


Pymongo offers a subclass of dict, bson.son.SON: http://api.mongodb.org/python/current/api/bson/son.html which is ordered for cases where you need that such as sending commands.


Dicts in Python and arrays in Javascript/BSON (MongoDB) are not ordered. Either you store some explicit sort-index number as part of the dict/array and perform app-level sorting on this level or you insert your data into a list which is of course sorted.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜