У меня есть простая операция по удалению документа из MongoDB с использованием MongoTemplate. Причина использования MongoTemplate заключается в том, что проект не связан напрямую со службой, использующей базу данных, следовательно, он не требует и не должен требовать самих классов модели базы данных.
Запрос выглядит следующим образом:
Criteria criteria = Criteria.where("_id")
.is(new ObjectId(id));
mongoTemplate.remove(Query.query(criteria), collectionName);
Где id
- это объект String, а collectionName
- имя коллекции.
Однако запрос при преобразовании в синтаксис MongoDB из Spring Data MongoDB создает такое выражение: { "_id" : { "$oid" : "5e206994943f3c1d6c778efb"}}
вместо { "_id" : ObjectId("5e206994943f3c1d6c778efb")}
.
В результате данные сохраняются в базе данных, даже если они должны быть удалены. Когда я пытаюсь выполнить первый запрос на самой оболочке Mon go, он выдает ошибку Unknown operator: $oid
.
Что-то не так, что я сделал? Как их исправить?
Спасибо.