Morphia Upserting Field为int64而不是in32

时间:2017-08-07 17:34:59

标签: mongodb morphia

我已经使用Morphia写了一个文件向Mongo写了一个文件。

我有一个字段,我想保存为int32,但在upsert之后它将作为int64插入。

我确保使用Long.intValue()和Morphia序列化的对象将long转换为int,成员字段为int。我还检查了UpdateOperations.ops,看看morphia正在发起什么。

upsert操作是:

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

我使用的当前版本的Mongo是3.0。

任何帮助将不胜感激!

谢谢!

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

{$set={test_field=11}}

1 个答案:

答案 0 :(得分:0)

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