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

Javaのspringdataを使用して、上限付き配列($sliceおよび$sort)を使用してmongoDBドキュメントを保存する

    私はついにこのコードを使用して解決策を手に入れました:

    // Define the search query
    BasicDBObject searchQuery = new BasicDBObject().append("idU", idUser);
    
    // To create the json query to modify
    BasicDBObject logDocument = new BasicDBObject();
    
    // Create the object and add it to a list (because the $each require a list)
    List<DBObject> list = new ArrayList<DBObject>();
    DBObject object = new BasicDBObject().append("text", logMessage.getText());
    object.append("level", logMessage.getLevel())
    object.append("date", logMessage.getDate());
    list.add(object);
    
    // Create the $sort and $slice query at the same time
    logDocument.append(
        "$push",
        new BasicDBObject().append("logs", new BasicDBObject().append("$each", list).append("$sort", new BasicDBObject().append("date", 1))
                .append("$slice", -10)));
    
    String json = "{findAndModify:\"collectionLog\", query:" + searchQuery.toString() + ", update: " + logDocument.toString() + ", upsert:true}";
    
    try {
         getMongoTemplate().executeCommand(json);
    } catch (Exception e) {
         System.out.println(e);
    }
    

    他の人にも役立つことを願っています!!!



    1. mongoの任意のリストでオブジェクトの配列を並べ替える方法

    2. MongodbマングースのE11000重複キーエラーインデックス

    3. 複数のデータソースで使用するためのSpringDataリポジトリBean名のカスタマイズ

    4. 複数の条件とスライスを使用したMongoDBクエリ