我正在通过 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。 为什么会发生这种情况,我们如何覆盖它?
答案 0 :(得分:1)
这是完全正确的。因为当您使用 thing.a:x
更新时,它将存储为对象 thing: { a : x}
虽然 mongo 在最新版本中支持 dot,但 drivers
尚不支持。因此转换仍然发生。