Python 3.x 如何使用python在insert查询中将mongodb内置函数作为参数传递
我计划创建一个索引并自动删除它。因此,根据文档,建议使用带有createdAt参数的ensureIndex函数自动执行。如果我直接在mongo shell中给出查询,效果会很好 现在有点疑问了,我有一个条目列表,其中包含要使用python插入到指定集合中的字段。我应该如何给createdAt参数一个值new Date(),它是mongo中内置的,那么如何插入它呢Python 3.x 如何使用python在insert查询中将mongodb内置函数作为参数传递,python-3.x,mongodb,pymongo,Python 3.x,Mongodb,Pymongo,我计划创建一个索引并自动删除它。因此,根据文档,建议使用带有createdAt参数的ensureIndex函数自动执行。如果我直接在mongo shell中给出查询,效果会很好 现在有点疑问了,我有一个条目列表,其中包含要使用python插入到指定集合中的字段。我应该如何给createdAt参数一个值new Date(),它是mongo中内置的,那么如何插入它呢 In mongo shell: db.test1.insert({ "createdAt": new Date(), "log
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插入新日期() 在Mongo Shell中,您可以使用一个完整的Javascript环境,其中
newdate
是一个有效的表达式。它不是用Python编写的
您想要的是将一个日期类型对象和当前时间从Python传递到Mongo。pymongo
驱动程序了解如何将Pythondatetime
对象转换为MongoISODate
类型。因此,只要给它:
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)
现在它的工作和删除记录自动 它不起作用了。如果我使用直接插入,字段是“createdAt”:ISODate(“2019-11-12T09:34:49.102Z”;如果我通过python使用插入,字段是“createdAt”:ISODate(“2019-11-12T15:04:53.435Z”),那么您可能必须在
datetime
对象上正确设置时区和/或确保pymongo
具有时区意识: