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

mongodbで、$ in演算子と一致する配列要素のインデックスを知っていますか?

    したがって、データベースコレクションに次のものがあるとします。

    > db.couponmodel.find()
    { "_id" : "a" }
    { "_id" : "b" }
    { "_id" : "c" }
    { "_id" : "d" }
    

    コレクション内で次のIDを検索したいと思います

    var coupons_ids = ["c", "a" ,"z"];
    

    次に、正しいインデックスを投影できるように動的な投影状態を構築する必要があるため、各IDを対応するインデックスにマッピングする必要があります

    var conditions = coupons_ids.map(function(value, index){
        return { $cond: { if: { $eq: ['$_id', value] }, then: index, else: -1 } };
    });
    

    次に、これを集約パイプラインに注入できます

    db.couponmodel.aggregate([
        { $match : { '_id' : { $in : coupons_ids } } },
        { $project: { indexes : conditions } },
        { $project: {
            index : {
                $filter: { 
                    input: "$indexes", as: "indexes", cond: { $ne: [ "$$indexes", -1 ] }
                    }
                }
            } 
        },
        { $unwind: '$index' }
    ]);
    

    上記を実行すると、各_idとそれに対応するインデックスがcoupons_ids内に出力されます。 配列

    { "_id" : "a", "index" : 1 }
    { "_id" : "c", "index" : 0 }
    

    ただし、最後にパイプラインにアイテムを追加して、$indexを参照することもできます。 現在一致しているインデックスを取得します。



    1. mongodb:更新時に常に「安全」オプションを使用する必要があります

    2. コマンドラインからredis-serverをシャットダウンします

    3. 賛成票/反対票をmongodbに保存する

    4. 認証が有効になっている状態でMongoDBに接続できません