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

別のMongoDBのセットに基づいて、別のコレクションからドキュメントを返す方法を探しています

    SQLの「結合」と同様に、Mongoでは「ルックアップ」を使用する必要があります。

    ルックアップを使用するには、「集計」クエリを使用する必要があります

    したがって、必要なクエリは、

    db.collection('users').aggregate({$match:{ email: 'example_email' }},
        {$unwind:{path:"$sensors"}},
        {$lookup:{from:"sensor", localField: "sensors", foreignField:"sensorId", as:"sensorDetails"}},
    (err, userData)=>{
          console.log(userData);
    })
    

    つまり、このクエリは何をしているのでしょうか。

    「$lookup」行を参照--->「users」コレクションから、「sensors」フィールド(SQLのプライマリIDのようなユーザーコレクションへのローカルフィールド)を使用し、sensorId(外部)に一致する「sensor」コレクションから情報をフェッチしますセンサーコレクションのフィールド)、結果を「sensorDetails」フィールドに保存します。

    「userData[0].sensorDetails」を使用してsensorDetailsにアクセスできます。sensorDetailsは配列になります。

    ルックアップ に関する公式ドキュメントを確認してください unwind についてもお読みください



    1. MongoDBおよびNodeJS内の機密データの分離-暗号化されたキーを介した参照

    2. MongoDB C#ドライバーの使用:ラップされているか、ラップされていないか?

    3. MongoEngineスライシングクエリセット(djangoを使用したmongodb)

    4. Mongodb findOne()は戻り値nodejsではありません