我需要測試服務器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
但是,在python中不能識別mongodb的變量(使用$)。如何着手完成這一整合?
觀測數據: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()
我按照指示做了,但遠程數據庫只插入一條記錄。需要它插入相同的數量,所以我可以比較時間戳。只有這樣我才能知道銀行需要多長時間插入一個元組@Neil – touchmx 2014-11-08 17:49:47
@touchmx您可以使用'.update()'方法中記錄的「multi」選項來「更新」多個記錄。也許你誤解了'$ currentDate'。更新的時間戳將反映記錄更新的實際時間。如果您從客戶端提供了設定的日期,則所有**更新的記錄將共享相同的時間戳。使用'$ currentDate',那麼他們可能不會。 – 2014-11-09 01:06:48