如何使用python在插入查询中将mongodb内置函数作为参数传递

我有一个计划来创建索引并自动删除它。因此,根据文档,建议使用带有createdAt参数的sureIndexIndex函数自动执行。如果我直接在mongo shell中提供查询,效果会很好。

现在值得怀疑的是,我有一个条目列表,其中包含要使用python插入指定集合的​​字段。我应该如何给它创建一个具有值new Date()的createdAt参数,它是mongo内置的,所以如何插入它?

In mongo shell:

db.test1.insert({ "createdAt": new Date(),"logEvent": 2,"logMessage": "Success!"})

使用python:

import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["sm"]
mycol = mydb["test1"]
d={}
d['logEvent']=2
d['logMessage']="Success!!"
d['createdAt']=new Date()
mycol.insert(d)

如果我尝试过,db.test1.find()将createAt显示为ISO日期格式

{ "_id" : ObjectId("5dca4d3a4845f6fcdd9bec84"),"createdAt" : ISODate("2019-11-12T06:12:10.942Z"),"logEvent" : 2,"logMessage" : "Success!" }

如何使用pymongo插入新的Date()?

k13122603 回答:如何使用python在插入查询中将mongodb内置函数作为参数传递

使用Mongo Shell时,可以使用完整的Javascript环境,其中new Date是有效的表达式。它不是在Python中。

您想要的是将具有当前时间的日期类型对象从Python传递到Mongo。 pymongo驱动程序了解如何将Python datetime对象转换为Mongo ISODate类型。所以就给它:

from datetime import datetime

d['createdAt'] = datetime.now()
,

Mongodb使用UTC时区。因此,我们需要传递UTC时区格式的日期对象


    import pymongo
    from datetime import datetime
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["sm"]
    mycol = mydb["test1"]
    d={}
    d['logEvent']=2
    d['logMessage']="Success!!"
    d['createdAt']=datetime.utcnow()
    mycol.insert(d)

现在它可以工作并自动删除记录!!!

本文链接:https://www.f2er.com/3119152.html

大家都在问