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

2つの異なるキーを使用したMongoDB集計結果

    次の集計パイプラインを使用して、ObjectIdの目的のリストを取得します。これは、 $ifNullを使用します _idを追加するための集計演算子 配列general_productsの場合はフィールド フィールドが存在しません:

    db.products.aggregate([
        {
            "$match": {"warehouse_sku": /^1/ }
        },
        {
            "$group": {
                "_id": {
                    "_id": "$_id",
                    "general_products": "$general_products"
                },
                "data": {
                    "$addToSet": "$_id"
                }
            }
        },
        {
            "$project": {
                "_id": 0,
                "general_products": {
                    "$ifNull": ["$_id.general_products", "$data"]
                }
            }
        },
        {
            "$unwind": "$general_products"
        },
        {
            "$group": {
                "_id": null,
                "list_products": {
                    "$addToSet": "$general_products"
                }
            }
        }
    ]);
    

    これにより、配列list_productsを含むドキュメントが作成されます ObjectIdsを使用:

    /* 1 */
    {
        "result" : [ 
            {
                "_id" : null,
                "list_products" : [ 
                    ObjectId("554b9f223d77c810e8915539"), 
                    ObjectId("554b9f2e3d77c810e8915549"), 
                    ObjectId("554b99b83d77c810e8915436"), 
                    ObjectId("554b9f173d77c810e8915533"), 
                    ObjectId("554b9f143d77c810e8915530"), 
                    ObjectId("554b9f123d77c810e891552f")
                ]
            }
        ],
        "ok" : 1
    }
    



    1. データベースのサイズがRAMよりも大きい場合、MongoDBは機能しますか?

    2. IDセットで複数のドキュメントを更新します。マングース

    3. FindとFindAsyncの違い

    4. mongodb集約パイプライン内でJavascriptオブジェクトを使用するにはどうすればよいですか?