我正在尝试通过pymongo检索我插入mongodb的数据。
我的插入代码在下面(通过正则表达式解析后)
if connection is not None:
db.model.insert({"time": datetime.datetime(int(int3), int(int1),
int(int2), int(int4),
int(int5), int(int6),
int(int7))})
然后我在shell中输入了两个数据点。
>>> start = datetime.datetime(2012, 2, 2, 6, 35, 6, 764)
>>> end = datetime.datetime(2012, 2, 2, 6, 55, 3, 381)
然后我尝试查询这两个数据点之间的数据范围并收到返回的内容。
>>> db.wing_model.find({'time': {'$gte': start, '$lt': end}})
<pymongo.cursor.Cursor object at 0x0301CFD0>
>>> db.wing_model.find({'time': {'$gte': start, '$lt': end}})
<pymongo.cursor.Cursor object at 0x0301C110>
数据列在下面。
[02/02/2012 06:32:07.334][INFO]
[02/02/2012 06:32:07.334][INFO]
[02/02/2012 06:32:07.334][INFO]
[02/02/2012 06:32:13.711][INFO]
[02/02/2012 06:32:13.711][INFO]
[02/02/2012 06:32:13.711][INFO]
[02/02/2012 06:32:22.473][INFO]
[02/02/2012 06:32:22.473][INFO]
[02/02/2012 06:32:22.473][INFO]
[02/02/2012 06:35:06.764][INFO]
[02/02/2012 06:35:06.765][INFO]
[02/02/2012 06:35:06.765][INFO]
[02/02/2012 06:54:52.008][INFO]
[02/02/2012 06:54:52.008][INFO]
[02/02/2012 06:54:52.008][INFO]
[02/02/2012 06:54:59.512][INFO]
[02/02/2012 06:54:59.512][INFO]
[02/02/2012 06:54:59.512][INFO]
[02/02/2012 06:55:03.381][INFO]
[02/02/2012 06:55:03.381][INFO]
[02/02/2012 06:55:03.381][INFO]
[02/02/2012 06:55:06.142][INFO]
[02/02/2012 06:55:06.142][INFO]
[02/02/2012 06:55:06.142][INFO]
[02/02/2012 06:55:09.652][INFO]
[02/02/2012 06:55:09.652][INFO]
[02/02/2012 06:55:09.652][INFO]
[02/02/2012 06:55:13.396][INFO]
[02/02/2012 06:55:13.396][INFO]
如何让我的查询返回“开始”和“结束”数据之间的所有内容?
另外,我如何以可理解的形式收到此内容?
最后,为什么同一个查询会返回不同的游标对象位置?
谢谢。
答案 0 :(得分:17)
重复现有的基本教程文档:
start = datetime.datetime(2012, 2, 2, 6, 35, 6, 764)
end = datetime.datetime(2012, 2, 2, 6, 55, 3, 381)
for doc in db.wing_model.find({'time': {'$gte': start, '$lt': end}}):
print doc
最后,为什么同一个查询返回不同的游标对象 地点?
情况应该在哪里?
您会看到两个不同的游标实例,它们可能会返回相同的结果集 - 或者?
答案 1 :(得分:0)
@staticmethod
def _get_results_to_json(data):
"""Get documents from a MongoDB search result.
Transforms MongoDB BSON documents into JSON serializable documents.
This process converts the ObjectIds into hexadecimal strings.
Parameters
----------
data : `~pymongo.cursor.Cursor`
A MongoDB search result.
Returns
-------
|list| of |dict|
A list of JSON serializable documents.
"""
if isinstance(data, Cursor):
data = list(data)
if isinstance(data, list):
for doc in data:
doc['_id'] = str(doc['_id'])
elif isinstance(data, dict):
data['_id'] = str(data['_id'])
return data
_get_results_to_json(db.wing_model.find({'time': {'$gte': start, '$lt': end}}))