sql >> Database >  >> NoSQL >> MongoDB

Vanwege beperkingen van de com.mongodb.BasicDBObject-uitzondering bij het toevoegen van meerdere criteria GridFSDBFile-query

U kunt de methode hieronder bijwerken. U probeert meerdere $and . op te geven operator met elk een criterium.

Trouwens, je hebt geen expliciete and . nodig ing als mongodb biedt impliciete and wanneer criteria worden gescheiden door komma's.

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

In gevallen waarin u expliciete and . nodig heeft ing, kunt u onderstaande code gebruiken

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. Meteor geeft een id door in een link

  2. hoe variabelen $tid, $id door te geven aan de onbewerkte functie?

  3. Kan geen verbinding maken met 127.0.0.1:27017, reden:errno:111 Verbinding geweigerd

  4. Alle collecties in een mongo-database weergeven in een nodejs-script