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

mongodbのsubDocument配列で$sliceと$regexを一緒に使用する

    $unwind を組み合わせて使用​​できます および $ match mongo 集約 を使用 次のような期待される出力を取得するには:

    db.collection.aggregate({
        $match: {
        "_id": "3691149613248"  // you can skip this condition if not required
        }
    }, {
        $unwind: "$following"
    }, {
        $match: {
        "following.content_id": {
            $regex: /^369/
        }
        }
    }, {
        $group: {
        _id: "$_id",
        "following": {
            $push: "$following"
        }
        }
    })
    

    スキップ を適用する場合 および limit 上記のクエリにすると、次のように簡単に使用できます:

    db.collection.aggregate({
        $match: {
        "_id": "3691149613248" //use this if you want to filter out by _id
        }
    }, {
        $unwind: "$following"
    }, {
        $match: {
        "following.content_id": {
            $regex: /^369/
        }
        }
    }, {
        $skip: 4  // you can set offset here
    }, {
        $limit: 3 // you can set limit here
    }, {
        $group: {
        _id: "$_id",
        "following": {
            $push: "$following"
        }
        }
    })
    

    編集

    5.4未満のPHPバージョンを使用している場合、クエリは次のようになります。

    $search = "369";
    $criteria = array(array("$match" => array("_id" => "3691149613248")),
        array("$unwind" => "$following"),
        array("$match" => array("following.content_id" => array("$regex" => new MongoRegex("/^$search/")))),
        array("$skip" => 4), array("$limit" => 3),
        array("$group" => array("_id" => "$_id", "following" => array("$push" => "$following"))));
    $collection - > aggregate($criteria);
    

    5.3以降のPHPバージョンを使用している場合は、{を置き換えるだけです。 および} [で中括弧 および] それぞれ。




    1. マングースはmongodbに接続しません

    2. mongoDBプレフィックスワイルドカード:fulltext-search($ text)search-stringでパーツを検索

    3. Node.jsはMongoDBの変更をリッスンします

    4. エラー:ホスト識別子のダブルコロン