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

Karena keterbatasan pengecualian com.mongodb.BasicDBObject saat menambahkan beberapa kriteria permintaan GridFSDBFile

Anda dapat memperbarui metode di bawah ini. Anda mencoba memberikan beberapa $and operator dengan masing-masing memiliki kriteria.

Btw, Anda tidak memerlukan and explicit yang eksplisit ing sebagai mongodb menyediakan and implicit implisit ing ketika kriteria dipisahkan dengan koma.

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();
}

Dalam kasus di mana Anda membutuhkan and explicit eksplisit ing, Anda dapat menggunakan kode di bawah ini

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. Koneksi diatur ulang oleh rekan pymongo

  2. Tidak dapat memulai logstash menggunakan konfigurasi mongoDB?

  3. Perbarui dokumen Tertanam di mongodb menggunakan C #

  4. Aliran perubahan MongoDB 4.4.4 mengembalikan semua pembaruan dokumen daripada kondisi yang difilter yang cocok?

  5. NodeJS + Mongo - bagaimana cara mendapatkan konten koleksi?