2017-08-07 50 views
2

我已经写了一个操作使用Morphia向Mongo上传文档。Morphia插入字段作为int64而不是in32

我有一个字段,我想保存为一个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()) 

蒙戈的当前版本我使用的是3.0。

任何帮助,将不胜感激!

谢谢!

编辑: 综观吗啡更新查询操作是:

{$set={test_field=11}} 
+0

你可以添加一个完整的例子吗?你如何验证它是数据库中的Int64?你可以在shell中执行'db.collection_name.find({“test_field”:{$ type:18}})'; – Veeram

+0

'db.collection_name.find({“test_field”:{$ type:18}})''返回我在我的集​​合中唯一的文档。我也使用Robomongo来确认文档中每个字段的类型。 我已经删除了集合,以确保没有索引值持有 – diepjy

+0

此外,我已经检查到JSON的文件,该字段有“test_field”:NumberLong(1) – diepjy

回答

0

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

相关问题