MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Bagaimana cara membuat kueri equals dinamis menggunakan Apache Camel dan MongoDB?

Sebagai permulaan, pernyataan di atas tidak akan dikompilasi. Itu ditunjukkan kepada saya dalam pertanyaan lain bahwa ada kesalahan dalam dokumentasi Apache Camel MongoDB saat ini dan bahwa setHeader baris di atas seharusnya berbunyi:

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

Cara saya akhirnya melakukan ini adalah dengan membuat Expression anonim :

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}'");
    }
}

Catatan tambahan:Saya tidak menemukan pernyataan pengembalian itu di Expression . Saya mengalami kesalahan ketik, jadi saya melihat apa lagi Expression Unta Apache implementasi yang disertakan dalam perpustakaan Camel kembali, dan saya menemukan klausa pengembalian itu.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB menghapus dengan sangat lambat

  2. Agregat Mongodb, Bagaimana cara menghitung dokumen berdasarkan kriteria interval?

  3. Pemuatan Malas/Lebih Banyak Data Gulir di Mongoose/Nodejs

  4. Otentikasi MongoDb menggunakan Hibernate OGM

  5. Cara membuat pagination dengan luwak