sql >> Database >  >> NoSQL >> MongoDB

Zoek en sorteer de buitenlandse collectie

U hoeft niet te $unwind de workouts array omdat het al array van _id . bevat s en gebruik $replaceRoot in plaats van $project te doen

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

of zelfs met nieuwe $lookup syntaxis

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. MongoDB Aggregation Framework - Dynamic Field Rename

  2. MongoDB -- Een voorwaardelijke instructie instellen in .find()

  3. Kan geografische sleutels niet extraheren, onbekend GeoJSON-type:{coördinaten:[13.42493100000003, 52.50074619999999]

  4. Snelste manier om 100 miljoen documenten op ID te verwijderen