如何为服务器生成时间设置默认值?
How to set a default value to server generated time?
是否可以有一个日期时间字段,在保存期间将其作为默认服务器生成的时间?
class ADoc(Document):
...
created_at = me.DateTimeField(default=datetime.datetime.utcnow)
这个模型有两个问题:
created_at
会在创建模型实例时获取一个值,而不是文档存入数据库的时间。
使用客户端时间,这可能与服务器时间不同 -- 我想始终使用服务器时间作为时间源。
也许你可以使用运算符 $currentDate ?
UPD:
我喜欢pymongo,但我认为它可以用于MongoEngine,你可以试试:
collection = Animal._get_collection()
collection.update({}, {"$currentDate": {"date": 1}}, upsert=true)
默认情况下,_id
字段包含创建时的时间戳。
您可以像这样访问它 ObjectId("507c7f79bcf86cd7994f6c0e").getTimestamp()
.
还有$currentDate
and new Date
。
我会在我的 ADoc 中使用由我定义的插入方法 class:
from datetime import datetime
class ADoc:
def __init__(self, db, config):
self.docs= db['docs']
self.config = config
def insert(self, document):
item = {
'name': document['name'],
'created': datetime.utcnow()
}
self.docs.insert_one(item)
然后在需要的时候简单地执行该方法
client = MongoClient(DB_URL)
db = client['yourDb']
doc = "your new doc"
adoc = ADoc(db, app.config)
adoc.insert(doc)
是否可以有一个日期时间字段,在保存期间将其作为默认服务器生成的时间?
class ADoc(Document):
...
created_at = me.DateTimeField(default=datetime.datetime.utcnow)
这个模型有两个问题:
created_at
会在创建模型实例时获取一个值,而不是文档存入数据库的时间。使用客户端时间,这可能与服务器时间不同 -- 我想始终使用服务器时间作为时间源。
也许你可以使用运算符 $currentDate ?
UPD: 我喜欢pymongo,但我认为它可以用于MongoEngine,你可以试试:
collection = Animal._get_collection()
collection.update({}, {"$currentDate": {"date": 1}}, upsert=true)
默认情况下,_id
字段包含创建时的时间戳。
您可以像这样访问它 ObjectId("507c7f79bcf86cd7994f6c0e").getTimestamp()
.
还有$currentDate
and new Date
。
我会在我的 ADoc 中使用由我定义的插入方法 class:
from datetime import datetime
class ADoc:
def __init__(self, db, config):
self.docs= db['docs']
self.config = config
def insert(self, document):
item = {
'name': document['name'],
'created': datetime.utcnow()
}
self.docs.insert_one(item)
然后在需要的时候简单地执行该方法
client = MongoClient(DB_URL)
db = client['yourDb']
doc = "your new doc"
adoc = ADoc(db, app.config)
adoc.insert(doc)