Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何使用python在insert查询中将mongodb内置函数作为参数传递_Python 3.x_Mongodb_Pymongo - Fatal编程技术网

Python 3.x 如何使用python在insert查询中将mongodb内置函数作为参数传递

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

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

现在有点疑问了,我有一个条目列表,其中包含要使用python插入到指定集合中的字段。我应该如何给createdAt参数一个值new Date(),它是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插入新日期()

在Mongo Shell中,您可以使用一个完整的Javascript环境,其中
newdate
是一个有效的表达式。它不是用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)


现在它的工作和删除记录自动

它不起作用了。如果我使用直接插入,字段是“createdAt”:ISODate(“2019-11-12T09:34:49.102Z”;如果我通过python使用插入,字段是“createdAt”:ISODate(“2019-11-12T15:04:53.435Z”),那么您可能必须在
datetime
对象上正确设置时区和/或确保
pymongo
具有时区意识: