我是Stackoverflow,MongoDB和PyMongo的完全新手。我有一个数据库,其中包含一个名为posts的集合,如下所示。
{
EXPERIMENT:1,
DATA[
{TIMESTAMP:1/1/1000 00:00:00,
"A":1,
"B":2,
"C":3
},
{TIMESTAMP:1/1/1000 00:00:01,
"A":4,
"B":5,
"C":6
}
]
}
我甚至不确定这是否是建模数据结构的最佳方式,但它是我现在所拥有的并且我想查询它。当我尝试查询时,
db.posts.find({EXPERIMENT:1},{DATA.TIMESTAMP:1, _id:0})
我得到了我想要的东西,然而,我得到了" DATA"我认为这是一份文件清单,但我无法重复这些文件。
for result in db.posts.find({EXPERIMENT:1},{DATA.TIMESTAMP:1, _id:0}):
print result;
这只是打印一个大块的东西而不是逐行通过DATA。我也试过了:
for result in db.posts.find({EXPERIMENT:1},{DATA.TIMESTAMP:1, _id:0}):
for value in result:
print value;
然后我再次得到结果DATA,而不是我可以迭代的东西。显然,我错过了一些基本的东西。有人可以指点我正确的方向吗?也许有点偏离主题,但你是否也有可能涵盖这个的书籍建议?
谢谢!
编辑: 最终,我想要一个看起来像的结果集:
DATA = [1/1/1000 00:00:00, 1/1/1000 00:00:01]
其中DATA是传统的python列表,所以我可以这样做:
for value in DATA:
print value;
# Do something else with data
同样,我知道我错过了一些非常基本的东西。感谢您的帮助和理解!
答案 0 :(得分:0)
打印出这样一个“大事”?
In [12]: for result in db.test.find({'EXPERIMENT':1}, {'DATA.TIMESTAMP':1, '_id':0}): print result
{u'DATA': [{u'TIMESTAMP': u'1/1/1000 00:00:00'}, {u'TIMESTAMP': u'1/1/1000 00:00:01'}]}
然后,你应该尝试pprint:
In [13]: from pprint import pprint
In [14]: for result in db.test.find({'EXPERIMENT':1}, {'DATA.TIMESTAMP':1, '_id':0}): pprint(result)
{u'DATA': [{u'TIMESTAMP': u'1/1/1000 00:00:00'},
{u'TIMESTAMP': u'1/1/1000 00:00:01'}]}
你也可以这样做:
In [15]: for result in db.test.find({'EXPERIMENT':1}, {'DATA.TIMESTAMP':1, '_id':0}):
....: for k, v in result.items():
....: print k, v
....:
DATA [{u'TIMESTAMP': u'1/1/1000 00:00:00'}, {u'TIMESTAMP': u'1/1/1000 00:00:01'}]