【问题标题】:Issue upgrading Morphia to 2.0.0将 Morphia 升级到 2.0.0 的问题
【发布时间】:2020-10-26 09:11:19
【问题描述】:

我正在将 Morphia 升级到版本 2.0.0(当前为 1.3.2),我在删除此代码 sn-p 的已弃用 createQuery 方法时遇到问题,因为我需要进行元素匹配

val builder = BasicDBObjectBuilder.start()
        .add("items", BasicDBObject("\$elemMatch", BasicDBObject("\$and", arrayOf(
                BasicDBObject("shipments.correlations.id", pickupId),
                BasicDBObject("status.value", BasicDBObject("\$in", ItemStatus.values().filter {
                    it.value != ItemStatus.SHIPPED.value
                }.map { it.value }))
        ))))
if (excludeOrdersIds.count() > 0) {
    builder.add("id", BasicDBObject("\$nin", excludeOrdersIds))
}
return morphia.createQuery(Order::class.java, builder.get()).asList(FindOptions().limit(limit))

在 2.0.0 版中,我找不到让我进行 elem 匹配或让我使用 Mongo 驱动程序 BasicDBObjectBuilder 返回的 DBObject 的方法,就像我在这段代码 sn-p 中所做的那样。

有什么建议吗?

【问题讨论】:

    标签: java mongodb kotlin morphia


    【解决方案1】:

    如果您通过每个中间版本进行升级并遵循弃用版本,那么到最后您会更干净地到达那里。 2.0 版本放弃了对DBObject 的所有使用,取而代之的是现代Document。但是你真的应该至少在 1.6 版本中反弹,因为那里有一些弃用,可以让你为迁移到 2.0 做好准备。

    【讨论】:

    • 好的,假设我可以获取文档。我应该使用哪种方法来使用 Morphia 与之交互?现在我已经迁移了除了代码 sn-p 之外的所有代码库。或者,我有什么方法可以直接与新的 Morphia 一起执行和 elemMatch?
    • elemMatch 使用 Filters.elemMatch 完成
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-14
    • 2022-09-26
    • 2019-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多