Python pymongo:name';ISODate';没有定义
当我尝试使用pymongo在mongodb中选择数据时出现问题,这是我的代码:Python pymongo:name';ISODate';没有定义,python,mongodb,mongodb-query,pymongo,Python,Mongodb,Mongodb Query,Pymongo,当我尝试使用pymongo在mongodb中选择数据时出现问题,这是我的代码: import pymongo from pymongo import MongoClient import sys from datetime import datetime try: conn=pymongo.MongoClient('10.33.109.228',27017) db=conn.mnemosyne data_ip=db.session.aggregate({'$match'
import pymongo
from pymongo import MongoClient
import sys
from datetime import datetime
try:
conn=pymongo.MongoClient('10.33.109.228',27017)
db=conn.mnemosyne
data_ip=db.session.aggregate({'$match':{'timestamp':{'$gte': ISODate('2016-11-11T00:00:00.000Z'),'$lte': ISODate('2016-11-11T23:59:59.000Z')}}},{'$group':{'_id':'$source_ip'}})
for f in data_ip:
print f['_id']
except pymongo.errors.ConnectionFailure, e:
print "Could not connect to MongoDB: %s" % e
当我执行它时,我会出现如下错误:
Traceback (most recent call last):
File "test.py", line 9, in <module>
data_ip=db.session.aggregate({'$match':{'timestamp':{'$gte': ISODate('2016-11-11T00:00:00.000Z'),'$lte': ISODate('2016-11-11T23:59:59.000Z')}}},{'$group':{'_id':'$source_ip'}})
NameError: name 'ISODate' is not defined
{'$match': {'timestamp': {'$gte': start, '$lte': end}}}
这是mydatabase的示例结构:
> db.session.findOne()
{
"_id" : ObjectId("5786398d1f50070f31f27f7c"),
"protocol" : "epmapper",
"hpfeed_id" : ObjectId("5786398d1f50070f31f27f7b"),
"timestamp" : ISODate("2016-07-13T12:52:29.112Z"),
"source_ip" : "23.251.55.182",
"source_port" : 2713,
"destination_port" : 135,
"identifier" : "d3374f14-48f7-11e6-9e19-0050569163b4",
"honeypot" : "dionaea"
}
请帮助我修复错误
ISODate
是Mongo shell中的一个函数,它是一个javascript环境,在Python中不可用
可以使用将字符串转换为Python中的datetime对象
import dateutil.parser
dateStr = "2016-11-11T00:00:00.000Z"
dateutil.parser.parse(dateStr) # returns a datetime.datetime(2016, 11, 11, 00, 0, tzinfo=tzutc())
使用PyMongo
,如果要在MongoDB
中插入日期时间,只需执行以下操作:
import pymongo
import dateutil
dateStr = '2016-11-11T00:00:00.000Z'
myDatetime = dateutil.parser.parse(dateStr)
client = pymongo.MongoClient()
client.db.collection.insert({'date': myDatetime})
ISODate
是Mongo shell中的一个函数,这是一个javascript环境,在Python中不可用
可以使用将字符串转换为Python中的datetime对象
import dateutil.parser
dateStr = "2016-11-11T00:00:00.000Z"
dateutil.parser.parse(dateStr) # returns a datetime.datetime(2016, 11, 11, 00, 0, tzinfo=tzutc())
使用PyMongo
,如果要在MongoDB
中插入日期时间,只需执行以下操作:
import pymongo
import dateutil
dateStr = '2016-11-11T00:00:00.000Z'
myDatetime = dateutil.parser.parse(dateStr)
client = pymongo.MongoClient()
client.db.collection.insert({'date': myDatetime})
ISODate是一个JavaScript日期对象。要使用PyMongo查询日期范围,需要使用mongod将转换为相应BSON类型的实例。您不需要任何第三方库
另外,您不应该使用聚合框架来执行此操作,因为\u id
字段在集合中是唯一的,这使得此方法非常适合
如果确实需要使用aggregate()
方法,则$match
阶段必须如下所示:
Traceback (most recent call last):
File "test.py", line 9, in <module>
data_ip=db.session.aggregate({'$match':{'timestamp':{'$gte': ISODate('2016-11-11T00:00:00.000Z'),'$lte': ISODate('2016-11-11T23:59:59.000Z')}}},{'$group':{'_id':'$source_ip'}})
NameError: name 'ISODate' is not defined
{'$match': {'timestamp': {'$gte': start, '$lte': end}}}
ISODate是一个JavaScript日期对象。要使用PyMongo查询日期范围,需要使用mongod将转换为相应BSON类型的实例。您不需要任何第三方库
另外,您不应该使用聚合框架来执行此操作,因为\u id
字段在集合中是唯一的,这使得此方法非常适合
如果确实需要使用aggregate()
方法,则$match
阶段必须如下所示:
Traceback (most recent call last):
File "test.py", line 9, in <module>
data_ip=db.session.aggregate({'$match':{'timestamp':{'$gte': ISODate('2016-11-11T00:00:00.000Z'),'$lte': ISODate('2016-11-11T23:59:59.000Z')}}},{'$group':{'_id':'$source_ip'}})
NameError: name 'ISODate' is not defined
{'$match': {'timestamp': {'$gte': start, '$lte': end}}}