MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

MongoDBのすべてのキーを一覧表示せずに、サブフィールドをプロジェクションのトップレベルにプロモートしますか?


サブフィールドをプロジェクションのトップレベルにプロモートするには、$objectToArrayと$arrayToObjectを使用します。まず、ドキュメントを使用してコレクションを作成しましょう:

> db.promoteSubfieldsDemo.insertOne({'s':10,'y':{'t':20,'u':30,}});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e038004190a577c668b55d5")
}

以下は、find()メソッドを使用してコレクションからすべてのドキュメントを表示するためのクエリです-

> db.promoteSubfieldsDemo.find().pretty();

これにより、次の出力が生成されます-

{
   "_id" : ObjectId("5e038004190a577c668b55d5"),
   "s" : 10,
   "y" : {
      "t" : 20,
      "u" : 30
   }
}

以下は、すべてのキーを一覧表示せずに、サブフィールドをプロジェクションのトップレベルに昇格させるためのクエリです-

> db.promoteSubfieldsDemo.aggregate([
...    { "$replaceRoot": {
...       "newRoot": {
...          "$arrayToObject": {
...             "$concatArrays": [
...                [{ "k": "s", "v": "$s" }],
...                { "$objectToArray": "$y" }
...             ]
...          }
...       }
...    }}
... ]);

これにより、次の出力が生成されます-

{ "s" : 10, "t" : 20, "u" : 30 }

  1. MongoDBコレクションのすべての名前を取得します

    元々は2019年1月18日にObjectRocket.com/blogで公開されました。 スキーマを検証したり、フィールドのタイプミスをデバッグしたり、設定すべきでないフィールドを見つけたりするには、MongoDB®コレクションのすべてのキーを理解する必要があります。 ObjectRocketを含む多くのMongoDB-as-a-Service企業は、ユーザーインターフェイス(UI)でこれを行う簡単な方法を提供しています。経験豊富なMongoDBusersは通常、MongooseforJavaScript®やMongoengineforPython®などのオブジェクトドキュメントマッパ

  2. MongoDBコレクション内のすべてのキーの名前を取得する

    スキーマを検証したり、フィールドのタイプミスをデバッグしたり、設定されていないフィールドを見つけたりするには、MongoDBコレクションのすべてのキーを理解する必要があります。 多くのMongoDB-as-a-service企業は、ObjectRocketを含め、UIでこれを行う簡単な方法を提供しています。経験豊富なMongoDBユーザーは通常、JS用のMongooseやPython用のMongoengineなどのオブジェクトドキュメントマッパー(ODM)から始めます。これにより、アプリケーションの一貫したスキーマを構築し、タイプミスを減らすことができます。 (ODMは型の検証も行うため、整