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

mongoクエリの減算が機能しませんか?

    $projectにわずかな変更を加える必要があります 物体。 1を引いたときに得られたオブジェクトを利用する必要があります countから 、countの以前の値を使用するのではなく 。

    DBObject project = new BasicDBObject("_id", 0);
    DBObject countAfterSubtraction = new BasicDBObject("$subtract", 
                                         new Object[] {"$count", 1});
    DBObject value = new BasicDBObject("$divide", 
                                new Object[] {"$value",countAfterSubtraction});
    project.put("value", value);
    project.put("Date", "$_id");
    stages.add(new BasicDBObject("$project", project));
    

    上記のコードは、records >= 2のグループで機能します 。レコードが1つしかない単一のグループがある場合、減算後のカウントはゼロになり、ゼロ除算になります。 エラー。

    したがって、コードを変更して、 $cond<を含めることができます。 / strong> 、減算後のカウントが0であるかどうかを確認します 、そうである場合は、デフォルトで1に設定します 、それ以外の場合は、countの減算値を保持します 。

    DBObject project = new BasicDBObject("_id", 0);
    DBObject countAfterSubtraction = new BasicDBObject("$subtract", 
                                           new Object[] {"$count", 1});
    DBObject eq  = new BasicDBObject("$eq",
                            new Object[]{countAfterSubtraction,0});
    DBObject cond = new BasicDBObject("$cond",
                             new Object[]{eq,1,countAfterSubtraction});
    DBObject value = new BasicDBObject("$divide", 
                                    new Object[] {"$value",cond});
    project.put("value", value);
    project.put("Date", "$_id");
    stages.add(new BasicDBObject("$project", project));
    



    1. node.js / mongodbを使用して、任意のスキーマレスデータをHTMLで表示する方法

    2. ノードの「_id」でMongoDBエントリを検索する正しい方法

    3. mongdbクラスターで最初の管理者ユーザーを作成すると、エラーが発生してユーザーを追加できませんでした:管理者にコマンドの実行が許可されていません

    4. 原因:org.bson.BsonInvalidOperationException:無効な状態INITIAL