Хорошо, я оказался в простой, но раздражающей проблеме.Мои монго-документы используют java.util.Date в качестве идентификатора, и, как вы можете догадаться, идентификатор преобразуется (пружинные преобразователи) в ObjectId, я не могу обновить эти документы, потому что каждый раз, когда создается новый ObjectId (Date), получают полностьюдругой идентификатор, даже если дата одна и та же ...
как заставить монго просто использовать java.util.Date в качестве идентификатора?
с примером кода:
public void updateNode(...node..) {
final MongoTemplate mongoTemplate = ...
final String collectionName = ...
final Query query = (new Query()).addCriteria(Criteria.where("time").is(node.getTime()));
final Update update = Update.update("time", node.getTime()).set("top", node.getTop())
.set("bottom", node.getBottom()).set("mid", node.getMid())
.set("startTime", node.getStartTime()).set("potential", node.isPotential());
mongoTemplate.upsert(query, update, MyClassNode.class, collectionName);
}
если я запускаю этот код в первый раз, когда объекты вставляются в базу данных, но с ObjectId ... если node.getTime () является java.sql.Date, тогда все в порядке.
если node.getTime () не является java.sql. Я не могу обновить документ, если он существует: почему?так как каждый раз, когда документ готовится, он создает новый ObjectId, обновление и запрос будут иметь два разных значения поля _id, и обновление завершится неудачей.