我已经使用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}}
答案 0 :(得分:0)
我设法找到了解决方案。对upsert的查询是在test_field上查询为long而不是int。 Mongo 3.0将此视为要插入的类型 - 无论在Mongo 3.2上运行,都没有问题,它将使用upsert操作中指定的类型进行upsert,而不是查询。