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

MongoDBAggregationQuery-埋め込みドキュメント内から返されたフィールドの名前を変更する

    これにはいくつかのアプローチがありますが、MongoDBのバージョンに大きく依存します。 2.6以降の最新バージョンは、 $をサポートしています。マップ $project やりたいことをするために:

    db.friend.aggregate([
        { "$project": {
            "name": 1,
            "buddies": {
                "$map": {
                    "input": "$friends",
                    "as": "el",
                    "in": {
                        "nickName": "$$el.name",
                        "age": "$$el.age"
                    }
                }
            }
        }}
    ])
    

    以前のバージョンでは、 $ unwind 配列要素を操作し、 $ group

    db.collection.aggregate([
        { "$unwind": "$friends" },
        { "$group": {
            "_id": "$_id",
            "name": { "$first": "$name" },
            "buddies": {
                "$push": {
                    "nickName": "$friends.name",
                    "age": "$friends.age"
                }
            }
        }}
    ])
    

    最初の形式は、配列の内容を非正規化し、処理するパイプラインでより多くのドキュメントを生成しないため、もう少し効率的です。



    1. MongoDBを使用して、フィールドの値に関係なく、フィールドを持つすべてのドキュメントを検索するにはどうすればよいですか?

    2. 時間別のMongoDBグループ

    3. Predisは「サーバーから行を読み取っているときにエラーが発生しました」

    4. ノードパスポートエラー:不明な認証戦略ローカルログイン