相当于python中mongo shell的新Date()

时间:2017-02-10 10:44:47

标签: python mongodb

我是mongodb和python的初学者,我正在尝试编写python代码,根据NumberLong类型的日期字段删除30天以上的多个集合的文档,并且还必须将集合导出到删除前的CSV。我使用下面的简单代码打印记录作为第一步使用新的Date()。它在Mongo Shell中工作但在python中声明语法错误。请帮助。

示例数据:

{ "_id" : ObjectId("589d6eb390cc70b775892ae1"), "trgtm" : NumberLong("1486280499661") }
{ "_id" : ObjectId("589d602d2fa2fa6687bc7293"), "trgtm" : NumberLong("1486276781059") }
{ "_id" : ObjectId("589d701f90cc70b775892ae2"), "trgtm" : NumberLong("1486194463192") }
{ "_id" : ObjectId("589d702390cc70b775892ae3"), "trgtm" : NumberLong("1486108067444") }

代码

import pymongo
from pymongo import MongoClient
conn=MongoClient('localhost',27017)
db=conn.mydb
col=db.test
query= { "date": { "$lt": new Date(new Date()).getTime() - 30 * 24 * 60 * 60 * 1000 } }
cursor=col.find(query)
slice=cursor[0:100]
for doc in slice:
    print doc

3 个答案:

答案 0 :(得分:0)

我在python中使用datetime作为日期..

这是一个例子:

import datetime
date = datetime.date(2017,2,10)
otherDate = datetime.date(1999,1,1)
date < otherDate # False

答案 1 :(得分:0)

您必须像这样使用 datetime.datetime

query = {"date": {"$lt": datetime.datetime(2021, 6, 14, 0, 0, 0, 0)}}

要使用当前时间,您可以:

query = {"date": {"$lt": datetime.now(timezone.utc)}}

来源:https://pymongo.readthedocs.io/en/stable/examples/datetimes.html

答案 2 :(得分:0)

使用 bson.Int64() 查询 NumberLong 格式的时间戳。它对我有用。 在下面为您定制:

import bson
import pymongo
from pymongo import MongoClient
conn=MongoClient('localhost',27017)
db=conn.mydb
col=db.test
timestamp_value= <value> #calculate epoch time stamp 30 days earlier and variable should be of type String
query= { "date": { "$lt": bson.Int64(timestamp_value) } }
cursor=col.find(query)
slice=cursor[0:100]
for doc in slice:
    print doc