Python - 在dict里面的pymongo列表

时间:2015-01-08 14:27:16

标签: python mongodb dictionary pymongo database

我是python的新手。

我所拥有的:

我正在使用mongoDb和python。使用不同的日期,我想从该日期检索所有评论。

示例日期库:

id|created_time|comment |.....
0 |2014-01-01  | hi!    |......
1 |2014-02-01  | hello! |......
2 |2014-01-01  | bye    |......`

我尝试了什么:

text = db.comments.find(timeout=False)
time = db.comments.distinct('created_time')

#some code
#get all distinct date and put into list
timeArray = []
for allTime in time:
    timeArray.append(allTime)

comDict = {}
for allCom in text:
    global comDict
    if(allCom['created_time'] == timeArray[1]):

        #note i'm used timeArray[1] to test the code.

        comDict.update({allCom['created_time']:allCom['comments']})

print comDict

dict不能有重复的密钥,因此.update不断更改值而不是附加它但我不知道其他方式。

我需要的是什么:

{2014-01-01:['hi','bye'], 2014-02-01:['Hello!']}

我希望得到上述结果,但我不知道该怎么做。有人可以告诉我应该做什么,或者我做错了什么?

提前致谢!

2 个答案:

答案 0 :(得分:4)

不要在python级别解决它,让mongodb使用aggregate()对记录进行分组:

pipe = [
    {'$match': {'$timeout': False}},
    {'$group': {'_id': '$created_time', 
                'comments': {'$push': '$comments'}}},
]
db.comments.aggregate(pipeline=pipe)

答案 1 :(得分:0)

如果你真的想使用python:

dict0={}
if not 'date' in dict0.keys(): dict0['date']=[value]
else: dict0['date'].append(value)