使用 pymongo 在 mongodb 上插入 $currentDate

2024-01-08

我需要测试服务器 mongodb 的准确性。 我正在尝试插入一系列数据,花点时间将其发送到数据库以了解其何时插入。我正在尝试这个:

#!/usr/bin/python
from pymongo import Connection
from datetime import date, timedelta, datetime

class FilterData:

@classmethod
def setData(self, serialData):
    try:
        con = Connection('IP_REMOTE', 27017, safe=True)
        db = con['resposta']            
        inoshare = db.resposta
        inoshare.insert(serialData)            
        con.close()

    except  Exception as e:
        print "Erro no filter data: ", e.message, e.args

obj = FilterData()
inicio = datetime.now()
termino = inicio + timedelta(seconds=10)
contador = 1

while inicio <= termino:
    print contador, inicio.strftime('%d-%m-%Y %H:%M:%S')
    pacote = {'contador':contador, 'datahora':$currentDate()}
    obj.setData(pacote)
    contador += 1

但是mongodb的变量(使用$)在python中不被识别。如何继续完成这种整合?

Obs: IP_REMOTE = 我在远程服务器上的有效 IP

然后尝试以下操作,但只插入一条记录。

#!/usr/bin/python
from pymongo import Connection
from datetime import date, timedelta, datetime
import time

class FilterData:

    def __init__(self):
        self.con = Connection('54.68.148.224', 27017, safe=True)
        self.db = self.con['resposta']            
        self.inoshare = self.db.resposta

    def setData(self, serialData):
        try:

            self.inoshare.update({}, serialData, upsert=True)            

        except  Exception as e:
            print "Erro no filter data: ", e.message, e.args

    def desconect(self):
        self.con.close()

obj = FilterData()
inicio = datetime.now()
termino = inicio + timedelta(seconds=30)

while inicio <= termino:
    print inicio.strftime('%d-%m-%Y %H:%M:%S')
    pacote = {'$currentDate': {'datahora': { '$type': 'date' }}}
    obj.setData(pacote)
    inicio = datetime.now()
    time.sleep(1)

obj.desconect()

MongoDB 中的运算符表达式在数据结构中表示为字符串。这些也是“更新运算符”,所以$currentDate http://docs.mongodb.org/manual/reference/operator/update/currentDate/旨在用于“更新对象”部分.update() http://api.mongodb.org/python/current/api/pymongo/collection.html#pymongo.collection.Collection.update method.

因此,像这样从服务器插入带有“$currentDate”的新记录:

db = con['resposta']            
inoshare = db.resposta
inoshare.update({}, { 
    '$currentDate': {
        'datahora': { '$type': 'date' }
    }
},upsert=True)

当然,假设您的收藏中没有任何内容。否则请确保“查询”部分.update()当您想按原样“插入”/“更新插入”时,语句与文档不匹配。

MongoDB 手册页中的所有文档选项都是与 MongoDB shell 相关的 JSON 表示法,但这与许多动态类型语言(例如 python、ruby 和 Perl)的表示法没有什么不同。

顺便提一句。除非你是really在不同的脚本中进行测试,然后在每次操作之前和之后都不要建立连接和断开连接。数据库集合应该在应用程序的生命周期中保持开放。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 pymongo 在 mongodb 上插入 $currentDate 的相关文章

随机推荐