Morphia 将字段更新为 int64 而不是 in32

Morphia Upserting Field as int64 instead of in32

我已经使用 Morphia 编写了一个将文档更新插入 Mongo 的操作。

我有一个字段想保存为 int32,但在更新插入后它被插入为 int64。

我已经确保使用 Long.intValue() 将 long 转换为 int 并且 Morphia 序列化回的对象,成员字段是 int。我还检查了 UpdateOperations.ops 以查看吗啡正在升级。

upsert操作为:

UpdateOperations<Test> ops = datastore.createUpdateOperations(Test.class)
  .set("test_field", testField.intValue())

我目前使用的Mongo版本是3.0.

如有任何帮助,我们将不胜感激!

谢谢!

编辑: 查看Morphia中的更新查询操作是:

{$set={test_field=11}}

我设法找到了解决方案。 upsert 的查询是在 test_field 上查询 long 而不是 int。 Mongo 3.0 将此视为要插入的类型 - 但是 运行 在 Mongo 3.2 上没有问题,它将使用更新插入操作中指定的类型进行更新,而不是查询。