MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Làm cách nào để tạo truy vấn bằng động bằng Apache Camel và MongoDB?

Đối với người mới bắt đầu, câu lệnh ở trên sẽ không được biên dịch. Tôi đã chỉ ra cho tôi một câu hỏi khác rằng có lỗi trong tài liệu Apache Camel MongoDB hiện tại và setHeader dòng trên nên đọc:

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

Cách mà tôi kết thúc việc này là tạo một Expression ẩn danh :

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

Lưu ý bổ sung:Tôi không nghĩ ra câu lệnh trả lại đó trong Expression . Tôi đã gặp phải lỗi nhập và vì vậy tôi đã xem một Expression khác của Apache Camel các triển khai có trong thư viện Camel đã được trả về và tôi đã tìm thấy mệnh đề trả lại đó.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. tra cứu với điều kiện trong mongoose

  2. Làm thế nào để đổi tên đường dẫn để đáp ứng cho dân cư

  3. So sánh hiệu suất MongoDB trên đám mây công cộng:AWS, Azure &DigitalOcean

  4. Toán tử dấu chấm không tìm nạp thuộc tính con của đối tượng Tài liệu Mongoose

  5. Mongodb sắp xếp tài liệu theo giá trị tính toán phức tạp