MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да създам динамична заявка за равно с помощта на Apache Camel и MongoDB?

Като за начало, това твърдение по-горе няма да се компилира. Беше ми посочено в друг въпрос, че има грешка в текущата документация на Apache Camel MongoDB и че setHeader редът по-горе трябва да гласи:

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

Начинът, по който в крайна сметка направих това, беше като създадох анономен 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}'");
    }
}

Допълнителна забележка:Не измислих този оператор за връщане в Expression . Попаднах на типови грешки и затова погледнах какъв е друг Apache Camel Expression реализациите, включени в библиотеките на Camel, се връщаха и открих тази клауза за връщане.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. има ли обратна грешка при свързване на mongoose

  2. mgo time.Time или булева проверка

  3. mongoDB:как да обърна $unwind

  4. Удостоверяване с Spring Security и MongoDB

  5. Създаване на многополеви индекси в Mongoose / MongoDB