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

标签 mongodb morphia

我已经使用 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 上运行时没有问题,它将使用更新插入操作中指定的类型进行更新,而不是查询。

关于mongodb - Morphia 将字段更新为 int64 而不是 in32,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45552625/

相关文章:

python - MongoDB Compass 中的 UTC 日期不正确

java - 使用 Morphia Java 在每次更新时更新 mongo 中的 updated_at 属性

java - Morphia:将 DBObject 转换为实体

java - MongoDB Morphia - 独特的

php - 我的 RockMongo(MongoDB GUI)发生了什么事?

mongodb - 为什么 Meteor v0.4.x (MongoDB?) 曾经为一个非常简单的应用程序占用约 3GiB 的磁盘空间?

Mongodb查询计算每个文档两个日期之间的天数

mongodb - Mongoose 模式设置字符串的最大长度

Java:Morphia 用新字段值更新集合有多容易

java - 如何让 Morphia 将字段的值设置为函数调用的返回值?