使用位置运算符更改MongoDB 2.6

时间:2014-07-22 17:35:15

标签: java mongodb morphia

我有一个(Morphia)实体,它嵌入了另一个实体:

@Entity(value = "connection", noClassnameStored = false)
public class ConnectorEntity {
    @Embedded
    private List<UnavailabilityEntity> unavailabilities = new ArrayList<>();

嵌入式实体:

@Embedded
public class UnavailabilityEntity implements Serializable {
    private Date start = new Date();
    // Do not use a null value as Morphia (as of 0.99.1) cannot handle this on embedded lists
    private Date end = new Date(0);

添加不可用性可以正常工作。因此,列出了不可用的实体,如果某些内容当前不可用,则其中一个实体有end = new Date(0)

一旦连接器再次可用,我想&#34;关闭&#34;设置end = new Date()时无法使用。

以下查询在MongoDB 2.4中正常工作,但在2.6中没有工作,如果我想添加第二个不可用(添加和关闭一个工作正常):

@Override
public void addAvailability(final String connectionUuid) {
    Query<ConnectorEntity> query = mongoDataStore.find(ConnectorEntity.class)
        .field("uuid").equal(connectionUuid)
        .field("unavailabilities.start").exists()
        .field("unavailabilities.end").hasThisOne(new Date(0));

    // If there is an open unavailability - close it
    if (query.get() != null) {
        UpdateOperations<ConnectorEntity> update = mongoDataStore
            .createUpdateOperations(ConnectorEntity.class).disableValidation()
            .set("unavailabilities.$.end", new Date());
        mongoDataStore.update(query, update);
    }
}

所以我假设位置运算符$没有应用于正确的不可用性。 MongoDB中的某些内容是否发生了变化,我不知道?

0 个答案:

没有答案