如何设置服务器生成时间的默认值?

时间:2015-12-26 16:35:24

标签: mongodb pymongo mongoengine

是否可以拥有一个日期时间字段,该字段在保存期间具有默认服务器生成时间?

WHERE t1.address regexp t2.place

这个模型有两个问题:

  1. class ADoc(Document): ... created_at = me.DateTimeField(default=datetime.datetime.utcnow) 将在模型实例创建期间获取值,而不是将文档保存到数据库中的时间。

  2. 使用客户端时间,可能与服务器时间不同 - 我希望始终将服务器时间用作时间源。

3 个答案:

答案 0 :(得分:2)

也许您可以使用运算符$currentDate

<强> UPD : 我喜欢pymongo,但我认为可以用于MongoEngine,你可以试试:

collection = Animal._get_collection()
collection.update({}, {"$currentDate": {"date": 1}}, upsert=true)

example here

答案 1 :(得分:0)

默认情况下,_id字段包含创建时的时间戳 您可以像ObjectId("507c7f79bcf86cd7994f6c0e").getTimestamp()一样访问它。

还有$currentDatenew Date

答案 2 :(得分:0)

我会在我的ADoc类中使用insert方法定义:

Comparable.class.isAssignableFrom(String.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)