时间序列数据 mongodb 与 python pymongo 的桶模式
Bucket pattern for time-series data mongodb with python pymongo
我想创建基于时间的桶,特别是每小时或更长时间,如果 needed.I 在这里阅读 https://docs.mongodb.com/manual/tutorial/model-time-data/#example 关于桶模式,但我不知道要使用什么代码 python pymongo.My 数据集包含 2010-2020 年的 11 个文件及其大约 150 万行,如下所示:
_id:ObjectId("603fb0b7142a0cbb439ae2e1")
id1:3758
id6:2
id7:-79.09
id8:35.97
id9:5.5
id10:0
id11:-99999
id12:0
id13:-9999
c14:"U"
id15:0
id16:99
id17:0
id18:-99
id19:-9999
id20:33
id21:0
id22:-99
id23:0
timestamp1:2010-01-01T00:05:00.000+00:00
timestamp2:2009-12-31T19:05:00.000+00:00
所有属性每 5 分钟更改一次,但 id1 仍然是 same.The 是我尝试过的(在处理文件并将它们转换为 df 之后):
files = os.listdir('sampl/')
sorted_files = sorted(files)
for file in sorted_files:
df = process_file(file)
#df.reset_index(inplace=True) # Reset Index
data_dict = df.to_dict('records') # Convert to dictionary
mycol1.update_many(
{'nsamples': {'$lt': 12}},
{
'$push': {'samples': data_dict },
'$min': {'first': df['timestamp1']},
'$max': {'last': df['timestamp1']},
'$inc': {'nsamples': 1}
},
upsert=True
)
输出:
bson.errors.InvalidDocument: cannot encode object: id1 id6 id7 ... id23 timestamp1 timestamp2
任何帮助将不胜感激!提前致谢!
这里是关于如何在 mongodb 中插入带有桶模式的数据的答案:
for file in sorted_files:
df = process_file(file)
for row,item in df.iterrows():
data_dict = item.to_dict()
id1=3758
mycol1.update_many(
{"id1":id1,"nsamples": {"$lt": 12}},
{
"$push": {"id24": data_dict},
"$min": {"first": data_dict['timestamp1']},
"$max": {"last": data_dict['timestamp1']},
"$inc": {"nsamples": 1}
},
upsert=True
)
我想创建基于时间的桶,特别是每小时或更长时间,如果 needed.I 在这里阅读 https://docs.mongodb.com/manual/tutorial/model-time-data/#example 关于桶模式,但我不知道要使用什么代码 python pymongo.My 数据集包含 2010-2020 年的 11 个文件及其大约 150 万行,如下所示:
_id:ObjectId("603fb0b7142a0cbb439ae2e1")
id1:3758
id6:2
id7:-79.09
id8:35.97
id9:5.5
id10:0
id11:-99999
id12:0
id13:-9999
c14:"U"
id15:0
id16:99
id17:0
id18:-99
id19:-9999
id20:33
id21:0
id22:-99
id23:0
timestamp1:2010-01-01T00:05:00.000+00:00
timestamp2:2009-12-31T19:05:00.000+00:00
所有属性每 5 分钟更改一次,但 id1 仍然是 same.The 是我尝试过的(在处理文件并将它们转换为 df 之后):
files = os.listdir('sampl/')
sorted_files = sorted(files)
for file in sorted_files:
df = process_file(file)
#df.reset_index(inplace=True) # Reset Index
data_dict = df.to_dict('records') # Convert to dictionary
mycol1.update_many(
{'nsamples': {'$lt': 12}},
{
'$push': {'samples': data_dict },
'$min': {'first': df['timestamp1']},
'$max': {'last': df['timestamp1']},
'$inc': {'nsamples': 1}
},
upsert=True
)
输出:
bson.errors.InvalidDocument: cannot encode object: id1 id6 id7 ... id23 timestamp1 timestamp2
任何帮助将不胜感激!提前致谢!
这里是关于如何在 mongodb 中插入带有桶模式的数据的答案:
for file in sorted_files:
df = process_file(file)
for row,item in df.iterrows():
data_dict = item.to_dict()
id1=3758
mycol1.update_many(
{"id1":id1,"nsamples": {"$lt": 12}},
{
"$push": {"id24": data_dict},
"$min": {"first": data_dict['timestamp1']},
"$max": {"last": data_dict['timestamp1']},
"$inc": {"nsamples": 1}
},
upsert=True
)