查询具有约束的mongo db仅在存在字段或忽略字段时应用

时间:2019-10-11 12:02:14

标签: java mongodb mongodb-query morphia

我在Java上使用了morphia mongo,在这里我试图查询带有一些约束的一组数据。我有一组非常旧的数据,并进行了新的更改,我向现有集合中添加了一个新字段,该字段将仅出现在新记录中,因此,我想构造一个查询,以便在且仅当将条件应用于该集合记录时如果集合中包含该字段

我已经检查了几张票

Morphia MongoDB check for null and non existing field

与此接近但在查找空字段的地方不正确。我的情况下该字段不存在

Query<MyData> query = mObject.getDatastore().createQuery(MyData.class);
        query.field("field1").hasAnyOf(values);
        query.field("field2").exists().field("field2").lessThan(value);

我正在寻找类似集合中是否存在field2的情况,则仅应用小于约束,否则跳过该约束,仅应用field1约束。

1 个答案:

答案 0 :(得分:0)

你可以试试吗?

Query<MyData> query = mObject.getDatastore().createQuery(MyData.class);
        query.field("field1").hasAnyOf(values);
        query.field("field2").exists();
        query.field("field2").type(Type.INTEGER_64_BIT).field("field2").lessThan(value);

假设“ field2”的类型为INTEGER_64_BIT。