Morphia-HasAnyOf

Morphia - HasAnyOf

Morphia 的 HasAnyOf 功能似乎不起作用或我做错了什么。

数据已正确保存在数据库中。 我将 Morphia 1.0.1 与 MongoDB/Drive 3.0.1

一起使用

下面是我的class映射和查询:

//freight
@Entity(value="freight", noClassnameStored = true)
public class Freight extends BaseEntity {
@Embedded
protected List<Vehicle> vehicles;

//vehicle
@Entity(value="vehicle", noClassnameStored = true)
public class Vehicle extends BaseEntity{...

//Query
Query<Freight> query = getDatastore().createQuery(Freight.class);
    query.disableValidation();

if(vo.getVehicles() != null && !vo.getVehicles().isEmpty()){
        query.field("vehicles").hasAnyOf(vo.getVehicles());     
    }       

    return query.asList();

欢迎提出任何建议。

谢谢!

这应该有效——我们正在使用相同版本的 .hasAnyOf() 成功。

您或许应该将车辆实体更改为

//vehicle
@Embedded
public class Vehicle {...

由于您要嵌入它,因此它不是一个(独立的)实体。我不确定 BaseEntity 做了什么,但如果它添加了 ObjectId、时间戳,... — 这对于嵌入式实体来说不是必需的,因为所有信息都已经在货运中了。

我意识到 class Vehicle 应该被引用而不是嵌入,然后我更改了映射并尝试使用 hasAnyOf 但它没有用。

我找到了解决这个 post Using the $in operator through Morphia - doing it wrong? 的方法,它工作正常,但不是一个优雅的解决方案。

很高兴知道 hasAnyOf 适用于嵌入式对象。

谢谢!