Запросите mongo db с ограничением для применения только в том случае, если поле существует или игнорируется

Я использую morphia mongo с java, где я пытаюсь запросить набор данных с некоторыми ограничениями. У меня очень старый набор данных, и с моим новым изменением я добавил новое поле в существующую коллекцию, которая будет присутствовать только в новых записях, поэтому я хочу сформулировать запрос, чтобы применить условие к этой записи коллекции, если и только если в коллекции есть это поле

Я проверил несколько билетов, таких как

Morphia MongoDB проверяет пустое и несуществующее поле

что близко к этому, но не точно, где он ищет нулевое поле. В моем случае поле отсутствует

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

Я смотрю что-то вроде того, что если field2 существует в коллекции, то применяйте только ограничение lessthan или пропустите это ограничение, примените только ограничение field1.


person zee    schedule 11.10.2019    source источник


Ответы (1)


Вы можете попробовать это?

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);

Предполагая, что «поле2» имеет тип INTEGER_64_BIT.

person Haruo    schedule 30.10.2019