pymongo 将 .变量转换成字典

时间:2021-01-19 09:01:41

标签: python python-3.x mongodb pymongo pymongo-3.x

我正在通过 pymongo 将数据插入到 mongoDB 集合中。我已经记录了发送到 update_one 语句的所有信息和数据。

在 update_one 语句之前记录的数据:

vAxis: {
  viewWindow: { min: 0, max: 0.20 },
},

但是当它被插入到“test”中时,它会像这样附加:

 data =   {'a': 'h9421976fc124d5756497d3b', 'b': 1611046532.4558306, 'kw_trigger_thing_name': 'ThingName.a', 'ThingName.a_capability_temperature': 44, 'ThingName.a_capability_humidity': '288', 'ThingName.a_kw_thing_name': 'ThingName.a'}

使用它来更新文档:

inserted_data = { "_id" : ObjectId("6005d317525e0d67866c564f"), "a" : "h9421976fc124d5756497d3b", "b" : 1611046532.4558306, "ThingName" : { "a_capability_humidity" : "288", "a_capability_temperature" : 44,"a_kw_thing_name" : "ThingName.a"} 

所以在这里您将看到具有相同前缀键 ThingName 的解析数据。转换为 mongo 集合中的字典,键为 ThingName。 为什么会发生这种情况,我们如何覆盖它?

1 个答案:

答案 0 :(得分:1)

这是完全正确的。因为当您使用 thing.a:x 更新时,它将存储为对象 thing: { a : x}

Field names restrictions

虽然 mongo 在最新版本中支持 dot,但 drivers 尚不支持。因此转换仍然发生。

Another wonderful post