sql >> データベース >  >> NoSQL >> MongoDB

複数の基準を追加する場合のcom.mongodb.BasicDBObject例外の制限により、GridFSDBFileクエリ

    メソッドを以下に更新できます。複数の$andを提供しようとしています それぞれに基準がある演算子。

    ところで、明示的なandは必要ありません mongodbとしてのingは、暗黙のandを提供します 基準がコンマで区切られている場合。

    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が必要な場合 以下のコードを使用できます

    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. mongodbv3.2はMacでは実行できません

    2. sslを介してセロリからredisに接続した後、応答がありません

    3. laraveljenssegersをmongodbatlasクラスターに接続します

    4. 基準/集計:配列フィールドに最新のステータスを持つ要素が含まれるすべての完全なドキュメントを検索します