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

外国のコレクションを検索して並べ替える

    $ unwind ワークアウト すでに_idの配列が含まれている配列 ■ $ replaceRootを使用します $ projectを実行する代わりに

    Users.aggregate([
      { "$match": { "_id" : ObjectId("whateverTheUserIdIs") }}, 
      { "$lookup": {
        "from" : "workouts", 
        "localField" : "workouts", 
        "foreignField" : "_id", 
        "as" : "workoutDocumentsArray"
      }},
      { "$unwind": "$workoutDocumentsArray" },
      { "$replaceRoot": { "newRoot": "$workoutDocumentsArray" }}
      { "$sort" : { "date" : -1 }}
    ])
    

    または、新しい $ lookup 構文

    Users.aggregate([
      { "$match" : { "_id": ObjectId("whateverTheUserIdIs") }}, 
      { "$lookup" : {
        "from" : "workouts", 
        "let": { "workouts": "$workouts" },
        "pipeline": [
          { "$match": { "$expr": { "$in": ["$_id", "$$workouts"] }}},
          { "$sort" : { "date" : -1 }}
        ]
        "as" : "workoutDocumentsArray"
      }},
      { "$unwind": "$workoutDocumentsArray" },
      { "$replaceRoot": { "newRoot": "$workoutDocumentsArray" }}
    ])
    



    1. Laravel-ジョブを順番に実行する

    2. MongoDB:コレクション内のすべてのドキュメントについて、新しいフィールドを別のフィールドの値と等しく設定する方法

    3. MongoDB C#ドライバー2.0:MapReduceAsyncから結果を取得する方法

    4. AerospikeよりもRedisが好まれるユースケースは何ですか?