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

Do các hạn chế của ngoại lệ com.mongodb.BasicDBObject khi thêm nhiều tiêu chí Truy vấn GridFSDBFile

Bạn có thể cập nhật phương pháp bên dưới. Bạn đang cố gắng cung cấp nhiều $and mỗi toán tử có một tiêu chí.

Btw, bạn không cần and rõ ràng ing như mongodb cung cấp and ngầm định ing khi các tiêu chí được phân tách bằng dấu phẩy.

public void getFile(Map<String, Object> metaData) throws Exception {
    Criteria criteria = new Criteria();
    metaData.forEach((k, v) -> criteria.and("metadata." + k).is(v));
    GridFSDBFile gridFSDBFile = gridFsOperations.findOne(new Query(criteria));
    if (gridFSDBFile == null) {
        throw new HttpConflictException();
}

Trong những trường hợp bạn cần and rõ ràng ing, bạn có thể sử dụng mã dưới đây

public void getFile(Map<String, Object> metaData) throws Exception {
    Criteria criteria = new Criteria();
    Criteria[] andExpressions = metaData.entrySet().stream().
            map(kv -> Criteria.where("data." + kv.getKey()).is(kv.getValue()))
            .toArray(Criteria[]::new);
    Query andQuery = new Query();
    Criteria andCriteria = new Criteria();
    andQuery.addCriteria(andCriteria.andOperator(andExpressions));
    GridFSDBFile gridFSDBFile = gridFsOperations.findOne(andQuery);
    if (gridFSDBFile == null) {
        throw new HttpConflictException();
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB không tạo cơ sở dữ liệu trong shell

  2. mongodump Không thành công:tùy chọn xấu:chỉ có thể kết xuất một bộ sưu tập duy nhất vào stdout

  3. Meteor sử dụng Azure MongoDB

  4. Truyền tới ObjectId không thành công cho giá trị 586cc8b3ea780c071bbe2469 tại đường dẫn _id cho người dùng kiểu mẫu

  5. Cách tổng hợp dữ liệu theo từng ngày, từng tuần, từng tháng trong tuần, tháng, năm tương ứng trong mongodb