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

集計(一致、ルックアップ、プロジェクト)を使用してmongodbから2つの日付の間にデータをFILTERで返すにはどうすればよいですか?

    dateStartであれば、ソリューションはほぼ正しく見えます およびdateStart 実際にはDate Stringではなくオブジェクト s。

    トライ2 不完全でした$lookupを使用しているかどうかわかりません 試して1から か否か。その場合は、$lookupの出力を確認する必要があります。 $filterの入力と同じです 。したがって、asを変更する必要があります $lookup inputと一致する $filter

    {
      $lookup: {
        from: "notifications",
        localField: "accessToken",
        foreignField: "accessToken",
        as: "items" // here
      }
    
    }
    

    代替ソリューション

    出力として何が必要かわかりません。ユーザーオブジェクトなしで通知の配列のみが必要な場合は、次のことを試すことができます。

    [{
      $match: { userId: mongoose.Types.ObjectId(userId) }
    }, {
      $lookup: {
        from: "notifications",
        localField: "accessToken", // don't forget to index register.accessToken
        foreignField: "accessToken", // don't forget to index notification.accessToken
        as: "notifications"
      }
    }, {
      $unwind: "$notifications"
    }, {
      $match: { 
        dateCreated: { $gte: dateStart, $lte: dateEnd } // dateStart, dateEnd should be Date objects
      }
    }, { // optional, move notifications to top lvel
      $replaceRoot: { root: '$notifications' }
    }]
    



    1. 複数のフィールドでクエリを実行し、1回の呼び出しで返すSpring Data Mongo Query

    2. MongoDB-iterator_to_arrayの代わりにカーソルを使用する必要があるのはなぜですか(PHPの場合)

    3. SpringBootアプリからmongodbにアクセスする際の認証エラー

    4. HBaseリージョンがマージされます