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

MongoDBで検索/投影を実行するときにフィールドの名前を変更するにはどうすればよいですか?

    したがって、基本的には .aggregate()を使用します .find()の代わりに

    db.tweets.aggregate([
        { "$project": {
            "_id": 0,
            "coords": "$level1.level2.coordinates"
        }}
    ])
    

    そして、それはあなたが望む結果をあなたに与えます。

    MongoDB 2.6以降のバージョンは、findと同じように「カーソル」を返します。

    $projectを参照してください 詳細については、その他の集約フレームワーク演算子を参照してください。

    ほとんどの場合、.find()から返されたフィールドの名前を変更するだけです。 カーソルを処理するとき。例としてJavaScriptの場合、.map()を使用できます。 これを行うには。

    シェルから:

    db.tweets.find({},{'level1.level2.coordinates': 1, _id:0}).map( doc => {
      doc.coords = doc['level1']['level2'].coordinates;
      delete doc['level1'];
      return doc;
    })
    

    またはそれ以上のインライン:

    db.tweets.find({},{'level1.level2.coordinates': 1, _id:0}).map( doc => 
      ({ coords: doc['level1']['level2'].coordinates })
    )
    

    これにより、サーバーでの追加のオーバーヘッドが回避され、追加の処理オーバーヘッドが、取得されるデータのサイズを実際に削減することのメリットを上回る場合に使用する必要があります。この場合(およびほとんどの場合)、最小限であるため、カーソルの結果を再処理して再構築することをお勧めします。



    1. PythonRedisからRedisDBをフラッシュするにはどうすればよいですか?

    2. MongoDBを本番環境に移行する

    3. フラスコを起動する前に(起動していない場合は起動して)、redisが実行されているかどうかを確認するにはどうすればよいですか?

    4. MongoDBコレクション内に特定の埋め込みドキュメントを取得するにはどうすればよいですか?