MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Ze względu na ograniczenia wyjątku com.mongodb.BasicDBObject podczas dodawania wielu kryteriów zapytania GridFSDBFile

Możesz zaktualizować metodę do poniżej. Próbujesz podać wiele $and operator, z których każdy ma określone kryteria.

Btw, nie potrzebujesz wyraźnego and ing jako mongodb zapewnia niejawne and gdy kryteria są oddzielone przecinkiem.

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

W przypadkach, w których potrzebujesz wyraźnych and ing, możesz użyć poniższego kodu

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 wysyła zapytania do wielu kolekcji jednocześnie

  2. Narzędzie do tworzenia wizualizacji z istniejącego MongoDB

  3. Mongodb Sharding - brak takiego polecenia:'addShard'

  4. Czy istnieje sposób na ograniczenie liczby rekordów w określonej kolekcji?

  5. Jak usunąć dokumenty z wielu kolekcji na podstawie ID w MongoDB?