MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak utworzyć dynamiczne zapytanie równości za pomocą Apache Camel i MongoDB?

Na początek, powyższe stwierdzenie nie skompiluje się. W innym pytaniu zwrócono mi uwagę, że w aktualnej dokumentacji Apache Camel MongoDB jest błąd i że setHeader wiersz powyżej powinien brzmieć:

.setHeader(MongoDbConstants.CRITERIA, constant(Filters.eq("name", "Raul Kripalani"))

Skończyło się na tym, że stworzyłem anonimowe Expression :

import com.mongodb.client.model.Filters;
import com.mongodb.BasicDBObject;
import org.bson.conversions.Bson;

@Component
public class NotifyClientRoute extends RouteBuilder {
    public static final String NOTIFY_CLIENT_URI = "direct:notifyClient";

    @Override
    public void configure() throws Exception {

      from(NOTIFY_CLIENT_URI)
        .log("Determining which client gets the deletion request next for DR request '${header.drRequestId}'.")
        .setHeader(MongoDbConstants.CRITERIA, new Expression() {
            @Override
            public <T> T evaluate(Exchange exchange, Class<T> type) {
                String drRequestId = exchange.getIn().getHeader("drRequestId", String.class);

                Bson equalsClause = Filters.eq("drRequestId", drRequestId);

                // Alternatively:
                // Bson equalsClause = new BasicDBObject("drRequestId", new BasicDBObject("$eq", drRequestId));

                return exchange.getContext().getTypeConverter().convertTo(type, equalsClause);
            };
        })
        .to("mongodb:mongoClient?database=mydb&collection=mycollection&operation=findOneByQuery")
        .log("Query returned: '${body}'");
    }
}

Dodatkowa uwaga:nie wymyśliłem tego zwrotu w Expression . Napotkałem błędy typu, więc spojrzałem na to, co innego Apache Camel Expression implementacje zawarte w bibliotekach Camel powracały i znalazłem tę klauzulę powrotu.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB - przykład odniesień ręcznych

  2. findOne działa, ale nie pobierz wszystkiego/znajdź

  3. Czy mongoose / mongodb ma dostęp do odwołań do obiektów w schemacie podczas agregacji?

  4. Zagnieżdżone relacje MongoDb

  5. Zaokrąglanie do 2 miejsc po przecinku przy użyciu platformy agregacji MongoDB