MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Поради ограниченията на изключението com.mongodb.BasicDBObject при добавяне на множество критерии GridFSDBFile заявка

Можете да актуализирате метода до по-долу. Опитвате се да предоставите множество $and оператор, като всеки има критерий.

Между другото, нямате нужда от изричен and ing като mongodb предоставя неявни and ing, когато критериите са разделени със запетая.

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

В случаите, когато имате нужда от изрични and ing, можете да използвате кода по-долу

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 мултитенатично заклинание с @Document

  2. MongoDB :рамка за агрегиране:$ съвпадение между полета

  3. получаване на InvalidOperationException при заявка с AsQueryable в C#

  4. Как да премахнете _id в MongoDB и да замените с друго поле като първичен ключ?

  5. findAndModify или findOneAndUpdate - не е функция