sql >> Database >  >> NoSQL >> MongoDB

MongoDB-Escape dots '.' in kaartsleutel]

Bij gebruik van Spring Data MongoDB krijg je een instantie van:org.springframework.data.mongodb.core.convert.MappingMongoConverter die mapKeyDotReplacement . heeft standaard ingesteld op null - daarom krijg je een uitzondering.

U moet ofwel uw eigen exemplaar van org.springframework.data.mongodb.core.convert.MappingMongoConverter maken of wijzig gewoon de bestaande instantie met behulp van de provider setter-methode:

/**
 * Configure the characters dots potentially contained in a {@link Map} shall be replaced with. By default we don't do
 * any translation but rather reject a {@link Map} with keys containing dots causing the conversion for the entire
 * object to fail. If further customization of the translation is needed, have a look at
 * {@link #potentiallyEscapeMapKey(String)} as well as {@link #potentiallyUnescapeMapKey(String)}.
 * 
 * @param mapKeyDotReplacement the mapKeyDotReplacement to set
 */
public void setMapKeyDotReplacement(String mapKeyDotReplacement) {
    this.mapKeyDotReplacement = mapKeyDotReplacement;
}

In MongoDB wordt punt altijd behandeld als een speciaal teken, dus het vermijden ervan zal je in de toekomst waarschijnlijk wat andere hoofdpijn besparen.

EDIT:Om de standaard MappingMongoConverter te overschrijven voeg de volgende bonenverklaring toe:

  @Bean
  public MappingMongoConverter mongoConverter(MongoDbFactory mongoFactory) throws Exception {
    DbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoFactory);
    MappingMongoConverter mongoConverter = new MappingMongoConverter(dbRefResolver, mongoMappingContext);
    mongoConverter.setMapKeyDotReplacement(".");

    return mongoConverter;
  }


  1. Hash krijgen met symbool als sleutels voor mongo in rails

  2. Datum() invoegen in Mongodb via mongo-shell

  3. Cloudera Data Engineering gebruiken om de gegevens van het Paycheck Protection Program te analyseren

  4. Mongo bulksgewijs zoeken en bijwerken van overeenkomende documenten in één zoekopdracht?