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

コレクションではなく、特定のレコードに対するMongodb集計クエリ

    $ match パイプラインに入るドキュメントをフィルタリングする演算子。

    注文IDのリストを取得します( $ match $ inを使用したパイプライン find()<を使用する/ code> カーソルの map() 方法:

    var orderIds = db.delivery.find({"status": "DELIVERED"}).map(function(d){return d.order;});
    db.orders.aggregate([
        { "$match": { "_id": { "$in": orderIds } } },
        { "$group": { "_id": "$customer", "orders": { "$sum": 1 } } }
    ])
    

    MongoDB 3.2の場合は、 $ lookup 同じデータベース内のシャーディングされていないコレクションに左外部結合を実行して、処理のために「結合された」コレクションからドキュメントをフィルタリングする演算子。

    次の例は、ordersで集計操作を実行する方法を示しています。 注文からのドキュメントを結合するコレクション deliveryからのドキュメントを使用 orderフィールドを使用したコレクション deliveryから コレクション:

    db.orders.aggregate([
        {
            "$lookup": {
                "from": "delivery",
                "localField": "_id",
                "foreignField": "order",
                "as": "delivery_orders"
            }
        },
        { "$match": { "delivery_orders.status": "DELIVERED" } },    
        { "$group": { "_id": "$customer", "orders": { "$sum": 1 } } }
    ])
    



    1. nodejs、redis。キーが存在するかどうかを確認し、存在しない場合は新しいキーを作成します

    2. phpとmongodbでfindAndModifyを使用する方法

    3. PyMongoを使用した連結配列が不明なグループ演算子'$concatArrays'で失敗しました

    4. Spring Bootアプリケーションで複数のmongodbデータベースを使用するにはどうすればよいですか?