具有日期时间的MongoDB/Pymongo查询

use*_*999 9 python datetime mongodb pymongo

我试图通过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))})
Run Code Online (Sandbox Code Playgroud)

然后我在shell中输入了两个数据点.

>>> start = datetime.datetime(2012, 2, 2, 6, 35, 6, 764)
>>> end = datetime.datetime(2012, 2, 2, 6, 55, 3, 381)
Run Code Online (Sandbox Code Playgroud)

然后我尝试查询这两个数据点之间的数据范围并接收返回的数据.

>>> 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>
Run Code Online (Sandbox Code Playgroud)

数据如下.

[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]
Run Code Online (Sandbox Code Playgroud)

如何让我的查询返回"开始"和"结束"数据之间的所有内容?

另外,我如何以可理解的形式收到此信息?

最后,为什么同一个查询返回不同的游标对象位置?

谢谢.

小智 18

重复现有的基础教程文档:

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
Run Code Online (Sandbox Code Playgroud)

最后,为什么同一个查询返回不同的游标对象位置?

情况应该在哪里?

您会看到两个不同的游标实例,它们可能会返回相同的结果集 - 或者?

  • 到底在哪里?如果您使用的是Python 3,那么当然需要print() - 但我们不能猜测您的环境.所以想想你为盲目使用代码做了些什么. (2认同)