我有一个在Ubuntu 14.04上运行的MongoDB 3.2实例。单节点设置。昨晚我进行了一次迁移,我在一个集合中运行了大约1400个文档的代码:
for r in responses: # find cursor with ~1400 documents in it
database.responses.update_one({
"_id" : r["_id"]
}, {
"$set" : {
"client_id" : client["_id"]
}
})
迁移后,responses
集合中我的回复文档中的某些字段已从DateObject
类型切换为Int32
个时间戳表示形式。部分Int32
字段已更改为Double
s。这些字段未在我的$set
声明中更新(显然)。 这只影响了光标的一小部分(~75个文档)。
由于我们的模型希望这些字段具有不再具有的数据类型,因此导致灾难性故障。有人可以向我解释这里出了什么问题吗?
答案 0 :(得分:0)
for r in responses: # find cursor with ~1400 documents in it
database.responses.update_one({
"_id" : r["_id"]
}, {
"$set" : {
"client_id" : new DateObject(client["_id"]);
}
})
答案 1 :(得分:0)
我的猜测是你的代码python中的其他地方已经对类型进行了更改(可能是一些试图自动推断类型的代码!?)。
我非常肯定在你的回复之前:#34;"代码还有其他东西可能试图检测字段的类型。是这样的吗?你能在你提供的代码片段之前提供代码吗?